import numpy as np
import matplotlib.pyplot as plt
import netCDF4 as nc
import pandas as pd
import os
import csv
from glob import glob
import xarray as xr
import h5py
from scipy.interpolate import griddata
from shapely.geometry import Point
import geopandas as gpd
import pandas as pd
import numpy as np
import xarray as xr
import geopandas as gpd
import os
import shapely as shp
from matplotlib.font_manager import FontProperties
from matplotlib.patches import Patch
from matplotlib.legend_handler import HandlerPatch
os.chdir('/Users/chenchenren/postdoc/paper/2N and water-US/Figure 7 Cost and Benefit/')
/Users/chenchenren/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed). from pandas.core import (
excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Figure 5 By state/region_stata.csv"
data = pd.read_csv(excel_file)
print(data)
# Provide the path to the downloaded file
gazetteer_file_path = '/Users/chenchenren/postdoc/paper/2N and water-US/Figure 5 By state/2023_Gaz_counties_national.txt'
# Read the file into a DataFrame, specifying the delimiter (tab-separated)
gazetteer_data = pd.read_csv(gazetteer_file_path, sep='\t', dtype={'GEOID': float})
gazetteer_data = gazetteer_data[['USPS', 'GEOID']]
print(gazetteer_data)
gazetteer_data = gazetteer_data.merge(data, on='USPS', how='left')
print(gazetteer_data)
excel_file = "cost_benefit_state_soybean.csv"
data1 = pd.read_csv(excel_file)
data1['STATE1']=data1['state1']
print(data1)
excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Bootstrap/cost_benefit_state_bootstrap_soybean.csv"
data2 = pd.read_csv(excel_file)
data2['STATE1']=data2['state1']
print(data2)
excel_file = "/Users/chenchenren/postdoc/paper/2N and water-US/Bootstrap/cost_benefit_country_bootstrap_soybean.csv"
data3 = pd.read_csv(excel_file)
print(data3)
Region USPS STATE1 stateansi 0 E SOUTH CENTRAL AL Alabama 1 1 SOUTH CENTRAL AR Arkansas 5 2 SOUTHWEST AZ Arizona 4 3 MOUNTAIN NM New Mexico 35 4 SOUTHWEST CA California 6 5 MOUNTAIN CO Colorado 8 6 NORTHEAST CT Connecticut 9 7 NORTHEAST DE Delaware 10 8 SOUTHEAST FL Florida 12 9 SOUTHEAST GA Georgia 13 10 NORTH CENTRAL IA Iowa 19 11 NORTHWEST ID Idaho 16 12 NORTH CENTRAL IL Illinois 17 13 NORTH CENTRAL IN Indiana 18 14 NORTHERN PLAINS KS Kansas 20 15 E SOUTH CENTRAL KY Kentucky 21 16 E SOUTH CENTRAL LA Louisiana 22 17 NORTHEAST MA Massachusetts 25 18 NORTHEAST MD Maryland 24 19 NORTHEAST ME Maine 23 20 NORTH CENTRAL MI Michigan 26 21 NORTH CENTRAL MN Minnesota 27 22 NORTH CENTRAL MO Missouri 29 23 E SOUTH CENTRAL MS Mississippi 28 24 MOUNTAIN MT Montana 30 25 SOUTHEAST NC North Carolina 37 26 NORTHERN PLAINS ND North Dakota 38 27 NORTHERN PLAINS NE Nebraska 31 28 NORTHEAST NH New Hampshire 33 29 NORTHEAST NJ New Jersey 34 30 SOUTHWEST NV Nevada 32 31 NORTHEAST NY New York 36 32 NORTH CENTRAL OH Ohio 39 33 SOUTH CENTRAL OK Oklahoma 40 34 NORTHWEST OR Oregon 41 35 NORTHEAST PA Pennsylvania 42 36 NORTHEAST RI Rhode Island 44 37 SOUTHEAST SC South Carolina 45 38 NORTHERN PLAINS SD South Dakota 46 39 E SOUTH CENTRAL TN Tennessee 47 40 SOUTH CENTRAL TX Texas 48 41 SOUTHWEST UT Utah 49 42 SOUTHEAST VA Virginia 51 43 NORTHEAST VT Vermont 50 44 NORTHWEST WA Washington 53 45 NORTH CENTRAL WI Wisconsin 55 46 NORTHEAST WV West Virginia 54 47 MOUNTAIN WY Wyoming 56 USPS GEOID 0 AL 1001.0 1 AL 1003.0 2 AL 1005.0 3 AL 1007.0 4 AL 1009.0 ... ... ... 3217 PR 72145.0 3218 PR 72147.0 3219 PR 72149.0 3220 PR 72151.0 3221 PR 72153.0 [3222 rows x 2 columns] USPS GEOID Region STATE1 stateansi 0 AL 1001.0 E SOUTH CENTRAL Alabama 1.0 1 AL 1003.0 E SOUTH CENTRAL Alabama 1.0 2 AL 1005.0 E SOUTH CENTRAL Alabama 1.0 3 AL 1007.0 E SOUTH CENTRAL Alabama 1.0 4 AL 1009.0 E SOUTH CENTRAL Alabama 1.0 ... ... ... ... ... ... 3217 PR 72145.0 NaN NaN NaN 3218 PR 72147.0 NaN NaN NaN 3219 PR 72149.0 NaN NaN NaN 3220 PR 72151.0 NaN NaN NaN 3221 PR 72153.0 NaN NaN NaN [3222 rows x 5 columns] scenario state1 production_benefit_irri_t irri_cost_irri_t \ 0 1.5 Alabama -4.229711 22.237037 1 1.5 Arkansas -4.097742 -6.934679 2 1.5 Delaware -0.454248 0.882800 3 1.5 Florida -0.945025 0.215488 4 1.5 Georgia 0.742264 0.123610 .. ... ... ... ... 57 3.0 Tennessee -7.425782 85.527103 58 3.0 Texas -11.243790 0.549856 59 3.0 Virginia -9.707835 10.189684 60 3.0 West Virginia 0.340261 0.000000 61 3.0 Wisconsin 104.366425 0.000000 net_benefits_irri_t production_benefit_lnfer_t fer_cost_fer_t \ 0 -26.466749 5.412471 2.634539 1 2.836937 135.662864 53.888268 2 -1.337048 2.286980 0.075286 3 -1.160512 0.027452 0.001880 4 0.618654 1.540693 0.123584 .. ... ... ... 57 -92.952885 133.522941 53.301743 58 -11.793647 8.028937 1.664579 59 -19.897520 29.929930 16.876727 60 0.340261 0.455498 0.005718 61 104.366425 104.366425 0.000000 net_benefits_lnfer_t production_benefit_mana_t irri_cost_mana_t \ 0 2.777932 5.962040 -9.388624 1 81.774596 151.444754 -40.803628 2 2.211693 2.376867 -1.880136 3 0.025572 0.027526 0.000000 4 1.417109 1.560953 -0.425709 .. ... ... ... 57 80.221198 168.777715 -12.909839 58 6.364357 10.318007 0.000000 59 13.053203 35.089664 -0.881890 60 0.449780 0.464248 -0.000469 61 104.366425 104.366425 0.000000 fer_cost_mana_t net_benefits_mana_t STATE1 0 2.251015 13.099648 Alabama 1 24.919730 167.328652 Arkansas 2 0.064534 4.192469 Delaware 3 0.001880 0.025646 Florida 4 0.036681 1.949980 Georgia .. ... ... ... 57 49.536538 132.151016 Tennessee 58 1.664579 8.653428 Texas 59 15.825354 20.146200 Virginia 60 0.005718 0.458999 West Virginia 61 0.000000 104.366425 Wisconsin [62 rows x 13 columns] state1 scenario net_benefit_mana_p5 net_benefit_mana_p95 \ 0 Alabama 1.5 9.637692 12.855616 1 Alabama 3.0 28.430698 32.968700 2 Arkansas 1.5 117.150081 132.311621 3 Arkansas 3.0 70.262774 248.665490 4 Delaware 1.5 4.041214 5.238395 5 Delaware 3.0 5.076530 12.442841 6 Florida 1.5 0.004324 0.021677 7 Florida 3.0 0.573436 0.679152 8 Georgia 1.5 0.808435 0.940196 9 Georgia 3.0 15.302588 17.697003 10 Illinois 1.5 18.069357 34.135946 11 Illinois 3.0 357.890275 461.627200 12 Indiana 3.0 70.371207 100.782074 13 Indiana 1.5 0.745217 1.082977 14 Iowa 1.5 3.547419 6.681909 15 Iowa 3.0 47.386795 74.916808 16 Kansas 1.5 97.384117 110.697715 17 Kansas 3.0 306.552384 350.985335 18 Kentucky 1.5 7.951642 10.005109 19 Kentucky 3.0 78.187452 93.987354 20 Louisiana 1.5 23.533627 26.107881 21 Louisiana 3.0 100.526775 120.226196 22 Maryland 1.5 13.078795 13.516139 23 Maryland 3.0 27.527269 32.729904 24 Minnesota 1.5 0.000000 0.559552 25 Mississippi 3.0 182.182607 216.366975 26 Mississippi 1.5 57.177025 63.547325 27 Missouri 1.5 53.063903 67.801040 28 Missouri 3.0 243.107500 287.745903 29 Nebraska 1.5 5.388827 7.508153 30 Nebraska 3.0 87.346832 123.014569 31 New Jersey 1.5 0.061477 0.071461 32 New Jersey 3.0 0.379709 0.622123 33 New York 1.5 0.000000 0.000000 34 North Carolina 3.0 74.398257 95.501876 35 North Carolina 1.5 21.752457 25.417235 36 Ohio 3.0 0.322983 2.109478 37 Oklahoma 1.5 8.803164 10.437326 38 Oklahoma 3.0 21.931445 30.232381 39 Pennsylvania 3.0 -3.155823 1.169164 40 South Carolina 3.0 16.703469 19.699789 41 South Carolina 1.5 0.256288 0.317572 42 Tennessee 1.5 26.889571 44.930432 43 Tennessee 3.0 124.923062 141.291561 44 Texas 1.5 2.525509 2.854742 45 Texas 3.0 7.261168 9.770845 46 Virginia 1.5 5.492080 6.151219 47 Virginia 3.0 20.069991 23.208973 48 West Virginia 3.0 0.152181 0.234558 49 Wisconsin 3.0 0.000000 0.000000 50 Wisconsin 1.5 0.000000 0.000000 net_benefit_mana_med STATE1 0 12.379158 Alabama 1 31.136365 Alabama 2 124.721669 Arkansas 3 145.591953 Arkansas 4 4.407544 Delaware 5 5.739737 Delaware 6 0.015641 Florida 7 0.625200 Florida 8 0.863898 Georgia 9 16.570705 Georgia 10 25.968023 Illinois 11 409.132168 Illinois 12 85.228960 Indiana 13 0.957532 Indiana 14 5.024953 Iowa 15 59.364668 Iowa 16 103.904717 Kansas 17 328.219634 Kansas 18 8.874326 Kentucky 19 85.900173 Kentucky 20 24.895769 Louisiana 21 110.857378 Louisiana 22 13.300181 Maryland 23 30.249892 Maryland 24 0.000000 Minnesota 25 199.886808 Mississippi 26 60.573863 Mississippi 27 60.831421 Missouri 28 264.936883 Missouri 29 6.515854 Nebraska 30 105.897812 Nebraska 31 0.066942 New Jersey 32 0.506994 New Jersey 33 0.000000 New York 34 89.745917 North Carolina 35 23.909081 North Carolina 36 1.530826 Ohio 37 9.662547 Oklahoma 38 26.235257 Oklahoma 39 0.526748 Pennsylvania 40 18.432567 South Carolina 41 0.271361 South Carolina 42 40.017291 Tennessee 43 132.788674 Tennessee 44 2.703652 Texas 45 8.638596 Texas 46 5.841842 Virginia 47 21.622542 Virginia 48 0.191527 West Virginia 49 0.000000 Wisconsin 50 0.000000 Wisconsin scenario net_benefit_mana_p5 net_benefit_mana_p95 net_benefit_mana_med 0 1.5 504.999169 562.843575 532.670232 1 3.0 2015.709592 2379.947210 2189.906400
err=data2[['STATE1','net_benefit_mana_p95', 'net_benefit_mana_p5', 'net_benefit_mana_med','scenario']]
err['p95']=np.abs(err['net_benefit_mana_p95']-err['net_benefit_mana_med'])
err['p5']=np.abs(err['net_benefit_mana_p5']-err['net_benefit_mana_med'])
err=err[['STATE1','p95', 'p5','scenario']]
print(err)
err3=err[err['scenario']==3]
err15=err[err['scenario']==1.5]
err15.rename(columns={'p95': 'p95_15'}, inplace=True)
err15.rename(columns={'p5': 'p5_15'}, inplace=True)
err15=err15[['STATE1','p95_15', 'p5_15']]
err3.rename(columns={'p95': 'p95_3'}, inplace=True)
err3.rename(columns={'p5': 'p5_3'}, inplace=True)
err3=err3[['STATE1','p95_3', 'p5_3']]
err = err15.merge(err3, on='STATE1', how='left')
print(err)
err_country=data3[['net_benefit_mana_p95', 'net_benefit_mana_p5', 'net_benefit_mana_med','scenario']]
err_country['STATE1'] = 'U.S.'
err_country['p95']=np.abs(err_country['net_benefit_mana_p95']-err_country['net_benefit_mana_med'])
err_country['p5']=np.abs(err_country['net_benefit_mana_p5']-err_country['net_benefit_mana_med'])
err_country=err_country[['STATE1','p95', 'p5','scenario']]
print(err_country)
err_country3=err_country[err_country['scenario']==3]
err_country15=err_country[err_country['scenario']==1.5]
err_country15.rename(columns={'p95': 'p95_15'}, inplace=True)
err_country15.rename(columns={'p5': 'p5_15'}, inplace=True)
err_country15=err_country15[['STATE1','p95_15', 'p5_15']]
err_country3.rename(columns={'p95': 'p95_3'}, inplace=True)
err_country3.rename(columns={'p5': 'p5_3'}, inplace=True)
err_country3=err_country3[['STATE1','p95_3', 'p5_3']]
err_country = err_country15.merge(err_country3, on='STATE1', how='left')
print(err_country)
STATE1 p95 p5 scenario 0 Alabama 0.476458 2.741466 1.5 1 Alabama 1.832335 2.705667 3.0 2 Arkansas 7.589952 7.571588 1.5 3 Arkansas 103.073537 75.329180 3.0 4 Delaware 0.830851 0.366330 1.5 5 Delaware 6.703104 0.663207 3.0 6 Florida 0.006036 0.011316 1.5 7 Florida 0.053952 0.051764 3.0 8 Georgia 0.076298 0.055463 1.5 9 Georgia 1.126298 1.268117 3.0 10 Illinois 8.167923 7.898666 1.5 11 Illinois 52.495032 51.241892 3.0 12 Indiana 15.553114 14.857753 3.0 13 Indiana 0.125445 0.212315 1.5 14 Iowa 1.656956 1.477534 1.5 15 Iowa 15.552140 11.977874 3.0 16 Kansas 6.792998 6.520600 1.5 17 Kansas 22.765701 21.667251 3.0 18 Kentucky 1.130783 0.922683 1.5 19 Kentucky 8.087180 7.712721 3.0 20 Louisiana 1.212112 1.362142 1.5 21 Louisiana 9.368818 10.330603 3.0 22 Maryland 0.215958 0.221386 1.5 23 Maryland 2.480012 2.722623 3.0 24 Minnesota 0.559552 0.000000 1.5 25 Mississippi 16.480167 17.704201 3.0 26 Mississippi 2.973462 3.396839 1.5 27 Missouri 6.969620 7.767518 1.5 28 Missouri 22.809020 21.829383 3.0 29 Nebraska 0.992300 1.127027 1.5 30 Nebraska 17.116757 18.550980 3.0 31 New Jersey 0.004519 0.005465 1.5 32 New Jersey 0.115129 0.127285 3.0 33 New York 0.000000 0.000000 1.5 34 North Carolina 5.755959 15.347660 3.0 35 North Carolina 1.508153 2.156624 1.5 36 Ohio 0.578652 1.207842 3.0 37 Oklahoma 0.774779 0.859383 1.5 38 Oklahoma 3.997124 4.303811 3.0 39 Pennsylvania 0.642416 3.682571 3.0 40 South Carolina 1.267222 1.729098 3.0 41 South Carolina 0.046211 0.015074 1.5 42 Tennessee 4.913140 13.127720 1.5 43 Tennessee 8.502888 7.865612 3.0 44 Texas 0.151090 0.178143 1.5 45 Texas 1.132249 1.377428 3.0 46 Virginia 0.309378 0.349761 1.5 47 Virginia 1.586430 1.552551 3.0 48 West Virginia 0.043031 0.039346 3.0 49 Wisconsin 0.000000 0.000000 3.0 50 Wisconsin 0.000000 0.000000 1.5 STATE1 p95_15 p5_15 p95_3 p5_3 0 Alabama 0.476458 2.741466 1.832335 2.705667 1 Arkansas 7.589952 7.571588 103.073537 75.329180 2 Delaware 0.830851 0.366330 6.703104 0.663207 3 Florida 0.006036 0.011316 0.053952 0.051764 4 Georgia 0.076298 0.055463 1.126298 1.268117 5 Illinois 8.167923 7.898666 52.495032 51.241892 6 Indiana 0.125445 0.212315 15.553114 14.857753 7 Iowa 1.656956 1.477534 15.552140 11.977874 8 Kansas 6.792998 6.520600 22.765701 21.667251 9 Kentucky 1.130783 0.922683 8.087180 7.712721 10 Louisiana 1.212112 1.362142 9.368818 10.330603 11 Maryland 0.215958 0.221386 2.480012 2.722623 12 Minnesota 0.559552 0.000000 NaN NaN 13 Mississippi 2.973462 3.396839 16.480167 17.704201 14 Missouri 6.969620 7.767518 22.809020 21.829383 15 Nebraska 0.992300 1.127027 17.116757 18.550980 16 New Jersey 0.004519 0.005465 0.115129 0.127285 17 New York 0.000000 0.000000 NaN NaN 18 North Carolina 1.508153 2.156624 5.755959 15.347660 19 Oklahoma 0.774779 0.859383 3.997124 4.303811 20 South Carolina 0.046211 0.015074 1.267222 1.729098 21 Tennessee 4.913140 13.127720 8.502888 7.865612 22 Texas 0.151090 0.178143 1.132249 1.377428 23 Virginia 0.309378 0.349761 1.586430 1.552551 24 Wisconsin 0.000000 0.000000 0.000000 0.000000 STATE1 p95 p5 scenario 0 U.S. 30.173343 27.671063 1.5 1 U.S. 190.040810 174.196808 3.0 STATE1 p95_15 p5_15 p95_3 p5_3 0 U.S. 30.173343 27.671063 190.04081 174.196808
/var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:8: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err15.rename(columns={'p95': 'p95_15'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:9: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err15.rename(columns={'p5': 'p5_15'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:11: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err3.rename(columns={'p95': 'p95_3'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:12: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err3.rename(columns={'p5': 'p5_3'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:19: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country['STATE1'] = 'U.S.' /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:20: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country['p95']=np.abs(err_country['net_benefit_mana_p95']-err_country['net_benefit_mana_med']) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:21: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country['p5']=np.abs(err_country['net_benefit_mana_p5']-err_country['net_benefit_mana_med']) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:26: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country15.rename(columns={'p95': 'p95_15'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:27: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country15.rename(columns={'p5': 'p5_15'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:29: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country3.rename(columns={'p95': 'p95_3'}, inplace=True) /var/folders/vd/0_phd7hx2n51y4412862zww00000gp/T/ipykernel_13658/3233285433.py:30: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy err_country3.rename(columns={'p5': 'p5_3'}, inplace=True)
country15=data1[data1['scenario']==1.5]
country3=data1[data1['scenario']==3]
print(country3)
sum15 = country15['net_benefits_mana_t'].sum()
sum3 = country3['net_benefits_mana_t'].sum()
print(sum15, sum3)
scenario state1 production_benefit_irri_t irri_cost_irri_t \ 31 3.0 Alabama -3.890193 26.755370 32 3.0 Arkansas -3.425136 -6.934679 33 3.0 Delaware -0.374446 3.241651 34 3.0 Florida -1.783933 0.355719 35 3.0 Georgia -1.713197 1.139551 36 3.0 Illinois 126.158230 51.200694 37 3.0 Indiana -3.729876 52.169843 38 3.0 Iowa 165.144513 36.714968 39 3.0 Kansas 0.614182 18.739017 40 3.0 Kentucky -28.642050 768.402027 41 3.0 Louisiana -161.684084 41.744520 42 3.0 Maryland -3.430228 39.730081 43 3.0 Michigan 154.762181 0.000000 44 3.0 Minnesota 502.296025 0.000000 45 3.0 Mississippi -260.411644 46.664820 46 3.0 Missouri -205.258481 205.650668 47 3.0 Nebraska 2.931214 9.809361 48 3.0 New Jersey -1.404904 4.739189 49 3.0 New York 23.466339 0.000000 50 3.0 North Carolina -28.822971 151.435918 51 3.0 North Dakota 425.222359 0.000000 52 3.0 Ohio 144.542240 32.291488 53 3.0 Oklahoma -29.996977 1.665057 54 3.0 Pennsylvania 20.274950 13.586442 55 3.0 South Carolina -4.759724 8.973750 56 3.0 South Dakota 227.739488 0.000000 57 3.0 Tennessee -7.425782 85.527103 58 3.0 Texas -11.243790 0.549856 59 3.0 Virginia -9.707835 10.189684 60 3.0 West Virginia 0.340261 0.000000 61 3.0 Wisconsin 104.366425 0.000000 net_benefits_irri_t production_benefit_lnfer_t fer_cost_fer_t \ 31 -30.645563 29.964692 44.811163 32 3.509543 393.644892 614.851744 33 -3.616097 7.493455 0.437986 34 -2.139652 0.912998 0.429301 35 -2.852749 19.050525 20.493567 36 74.957536 428.074906 19.473995 37 -55.899720 112.059713 4.442684 38 128.429545 237.081738 3.413065 39 -18.124836 308.120205 83.128807 40 -797.044077 88.806785 26.170622 41 -203.428603 98.413779 11.786247 42 -43.160309 21.953480 3.546114 43 154.762181 154.762181 0.000000 44 502.296025 502.296025 0.000000 45 -307.076465 182.563900 33.319228 46 -410.909148 250.988260 24.549546 47 -6.878147 135.495228 4.916174 48 -6.144092 1.190824 0.030129 49 23.466339 23.466339 0.000000 50 -180.258890 91.409852 63.641819 51 425.222359 425.222359 0.000000 52 112.250752 150.225579 0.334937 53 -31.662035 27.123272 10.513043 54 6.688508 22.198291 0.046827 55 -13.733474 20.911641 10.599326 56 227.739488 227.739488 0.000000 57 -92.952885 133.522941 53.301743 58 -11.793647 8.028937 1.664579 59 -19.897520 29.929930 16.876727 60 0.340261 0.455498 0.005718 61 104.366425 104.366425 0.000000 net_benefits_lnfer_t production_benefit_mana_t irri_cost_mana_t \ 31 -14.846472 37.823616 -8.255710 32 -221.206853 539.434985 -28.063422 33 7.055469 8.401471 -6.361510 34 0.483697 1.108695 -0.015543 35 -1.443042 24.099131 -1.331946 36 408.600911 470.687375 10.135668 37 107.617029 119.997060 7.691448 38 233.668673 240.941815 1.074366 39 224.991398 398.328438 -9.419123 40 62.636163 102.133147 -9.025684 41 86.627532 121.123264 0.000000 42 18.407366 25.128958 -7.160343 43 154.762181 154.762181 0.000000 44 502.296025 502.296025 0.000000 45 149.244672 225.263014 -0.000053 46 226.438714 285.779987 -0.000527 47 130.579053 143.622842 0.000401 48 1.160695 1.213490 -0.000002 49 23.466339 23.466339 0.000000 50 27.768033 109.540425 -25.170258 51 425.222359 425.222359 0.000000 52 149.890642 150.465677 3.654147 53 16.610229 36.257079 0.000000 54 22.151465 22.259490 1.711077 55 10.312316 25.375353 -2.330810 56 227.739488 227.739488 0.000000 57 80.221198 168.777715 -12.909839 58 6.364357 10.318007 0.000000 59 13.053203 35.089664 -0.881890 60 0.449780 0.464248 -0.000469 61 104.366425 104.366425 0.000000 fer_cost_mana_t net_benefits_mana_t STATE1 31 42.570516 3.508810 Alabama 32 404.670327 162.828080 Arkansas 33 0.386712 14.376269 Delaware 34 0.391770 0.732468 Florida 35 15.169664 10.261413 Georgia 36 19.268898 441.282809 Illinois 37 4.482136 107.823475 Indiana 38 3.400346 236.467103 Iowa 39 81.637828 326.109733 Kansas 40 25.999883 85.158947 Kentucky 41 11.786247 109.337018 Louisiana 42 2.989792 29.299508 Maryland 43 0.000000 154.762181 Michigan 44 0.000000 502.296025 Minnesota 45 33.318363 191.944704 Mississippi 46 24.549525 261.230989 Missouri 47 4.916163 138.706278 Nebraska 48 0.030129 1.183363 New Jersey 49 0.000000 23.466339 New York 50 49.330479 85.380204 North Carolina 51 0.000000 425.222359 North Dakota 52 0.377156 146.434374 Ohio 53 10.513043 25.744036 Oklahoma 54 0.048275 20.500137 Pennsylvania 55 8.818404 18.887759 South Carolina 56 0.000000 227.739488 South Dakota 57 49.536538 132.151016 Tennessee 58 1.664579 8.653428 Texas 59 15.825354 20.146200 Virginia 60 0.005718 0.458999 West Virginia 61 0.000000 104.366425 Wisconsin 1310.9299425212762 4016.459939060458
print(country15['net_benefits_irri_t'].sum())
print(country3['net_benefits_irri_t'].sum())
print(country15['net_benefits_lnfer_t'].sum())
print(country3['net_benefits_lnfer_t'].sum())
-886.4326407528961 -474.1889441301457 1151.7415306046867 3184.6890463119903
df_sum = pd.DataFrame({
'sum3': [sum3],
'sum15': [sum15]
})
df_sum['STATE1'] = 'U.S.'
print(df_sum)
df_sum=df_sum.merge(err_country, left_on='STATE1', right_on='STATE1')
print(df_sum)
# Define columns for plotting
columns_to_plot = ['sum15', 'p5_15', 'p95_15',
'sum3', 'p5_3', 'p95_3']
num_attributes = len(columns_to_plot)
# Define the colors you want for the bars
colors = [ 'cadetblue','lightsalmon']
# Set the width of each bar
bar_width = 0.4
# Set the positions of the bars on the x-axis
index = np.arange(len(df_sum['STATE1']))
# Expand the length of the y-axis
plt.figure(figsize=(5, 1))
# Create a bar for each attribute
for i in range(num_attributes // 3):
plt.barh(index + i * bar_width, df_sum[columns_to_plot[i * 3]],
bar_width,label=f'{columns_to_plot[i * 3]}', color=colors[i], edgecolor='black', # Add edge color
linewidth=0.7, capsize=3, capstyle='round') # Set capstyle to 'round'
main_data = df_sum[columns_to_plot[i* 3]]
error_lower = (df_sum[columns_to_plot[i* 3 + 1]]).values
error_upper = (df_sum[columns_to_plot[i* 3 + 2]]).values
xerr = [error_lower, error_upper] # Correct error shape
plt.errorbar(main_data, index + (i) * bar_width, xerr=np.array(xerr),
fmt='o', color='black', label=columns_to_plot[i],alpha = 0.6,
linewidth=2, capthick=2, capsize = 3, markersize=5)
# Set the y-axis labels to be the state names
plt.yticks([0.2], df_sum['STATE1'],fontsize=24, fontfamily='Arial')
# Set the x-ticks
x_ticks = np.arange(0, 4600, 1100)
plt.xticks(x_ticks)
# Add a dashed line at x=0
ax = plt.gca()
# Set tick label font sizes
ax.tick_params(axis='both', labelsize=24)
ax.set_xticklabels(ax.get_xticklabels(), fontfamily='Arial')
ax.set_yticklabels(ax.get_yticklabels(), fontfamily='Arial')
# Save the entire figure as a JPG with DPI 300
plt.savefig('national_soybean_net_benefit.svg', format='svg', dpi=300, bbox_inches='tight', pad_inches=0.02, transparent=True)
# Show the plot
plt.show()
sum3 sum15 STATE1 0 4016.459939 1310.929943 U.S. sum3 sum15 STATE1 p95_15 p5_15 p95_3 \ 0 4016.459939 1310.929943 U.S. 30.173343 27.671063 190.04081 p5_3 0 174.196808
county15=data1[data1['scenario']==1.5]
county3=data1[data1['scenario']==3]
county15 = county15[['STATE1','net_benefits_mana_t']]
county3 = county3[['STATE1','net_benefits_mana_t']]
county15.rename(columns={'net_benefits_mana_t': 'net_benefits_mana_t15'}, inplace=True)
county3.rename(columns={'net_benefits_mana_t': 'net_benefits_mana_t3'}, inplace=True)
county=county15.merge(county3, left_on='STATE1', right_on='STATE1')
county=county.merge(err, left_on='STATE1', right_on='STATE1')
print(county)
STATE1 net_benefits_mana_t15 net_benefits_mana_t3 p95_15 \ 0 Alabama 13.099648 3.508810 0.476458 1 Arkansas 167.328652 162.828080 7.589952 2 Delaware 4.192469 14.376269 0.830851 3 Florida 0.025646 0.732468 0.006036 4 Georgia 1.949980 10.261413 0.076298 5 Illinois 61.373858 441.282809 8.167923 6 Indiana 48.531302 107.823475 0.125445 7 Iowa 54.947545 236.467103 1.656956 8 Kansas 103.797273 326.109733 6.792998 9 Kentucky 16.326974 85.158947 1.130783 10 Louisiana 24.850722 109.337018 1.212112 11 Maryland 14.222443 29.299508 0.215958 12 Minnesota 113.933198 502.296025 0.559552 13 Mississippi 60.452380 191.944704 2.973462 14 Missouri 54.985785 261.230989 6.969620 15 Nebraska 47.547352 138.706278 0.992300 16 New Jersey 0.364011 1.183363 0.004519 17 New York 5.679894 23.466339 0.000000 18 North Carolina 32.255306 85.380204 1.508153 19 Oklahoma 9.637457 25.744036 0.774779 20 South Carolina 2.143029 18.887759 0.046211 21 Tennessee 38.383070 132.151016 4.913140 22 Texas 2.755883 8.653428 0.151090 23 Virginia 6.772426 20.146200 0.309378 24 Wisconsin 27.941865 104.366425 0.000000 p5_15 p95_3 p5_3 0 2.741466 1.832335 2.705667 1 7.571588 103.073537 75.329180 2 0.366330 6.703104 0.663207 3 0.011316 0.053952 0.051764 4 0.055463 1.126298 1.268117 5 7.898666 52.495032 51.241892 6 0.212315 15.553114 14.857753 7 1.477534 15.552140 11.977874 8 6.520600 22.765701 21.667251 9 0.922683 8.087180 7.712721 10 1.362142 9.368818 10.330603 11 0.221386 2.480012 2.722623 12 0.000000 NaN NaN 13 3.396839 16.480167 17.704201 14 7.767518 22.809020 21.829383 15 1.127027 17.116757 18.550980 16 0.005465 0.115129 0.127285 17 0.000000 NaN NaN 18 2.156624 5.755959 15.347660 19 0.859383 3.997124 4.303811 20 0.015074 1.267222 1.729098 21 13.127720 8.502888 7.865612 22 0.178143 1.132249 1.377428 23 0.349761 1.586430 1.552551 24 0.000000 0.000000 0.000000
state_sum_10=county.nlargest(10, 'net_benefits_mana_t15')
state_sum_10 = state_sum_10.sort_values(by='net_benefits_mana_t3', ascending=False)
output_csv_file = "soybean_figure5.csv"
state_sum_10.to_csv(output_csv_file, index=False)
# Define the columns you want to plot
columns_to_plot = ['net_benefits_mana_t15', 'p5_15', 'p95_15','net_benefits_mana_t3', 'p5_3', 'p95_3']
# Number of attributes
num_attributes = len(columns_to_plot)
# Define the colors you want for the bars
colors = ['cadetblue','lightsalmon']
# Set the width of each bar
bar_width = 0.4
# Set the positions of the bars on the x-axis
index = np.arange(len(state_sum_10['STATE1']))
# Expand the length of the y-axis
plt.figure(figsize=(5, 12))
# Create a bar for each attribute
for i in range(num_attributes // 3):
plt.barh(index + i * bar_width, state_sum_10[columns_to_plot[i * 3]],
bar_width,label=f'{columns_to_plot[i * 3]}', color=colors[i], edgecolor='black', # Add edge color
linewidth=0.7) # Set capstyle to 'round'
main_data = state_sum_10[columns_to_plot[i* 3]]
error_lower = (state_sum_10[columns_to_plot[i* 3 + 1]]).values
error_upper = (state_sum_10[columns_to_plot[i* 3 + 2]]).values
xerr = [error_lower, error_upper] # Correct error shape
plt.errorbar(main_data, index + (i) * bar_width, xerr=np.array(xerr),
fmt='o', color='black', label=columns_to_plot[i],alpha = 0.6,
linewidth=2, capthick=2, capsize = 3, markersize=5)
# Set the y-axis labels to be the state names
plt.yticks(index + [0.2], state_sum_10['STATE1'])
# Set the x-axis label
plt.xlabel('Cost-competitiveness\n(Million $/yr)', fontsize=24, fontfamily='Arial')
# Set the x-ticks
x_ticks = np.arange(0, 900, 200)
plt.xticks(x_ticks)
# Add a dashed line at x=0
ax = plt.gca()
ax.axvline(0, color='black', linestyle='--', linewidth=1)
plt.text(0.8, 0.82, '(f) Soybean', transform=plt.gcf().transFigure,
fontsize=24, fontweight='bold', fontfamily='Arial', ha='right', va='bottom')
# Set tick label font sizes
ax.tick_params(axis='both', labelsize=24)
ax.set_xticklabels(ax.get_xticklabels(), fontfamily='Arial')
ax.set_yticklabels(ax.get_yticklabels(), fontfamily='Arial')
# Save the entire figure as a JPG with DPI 300
plt.savefig('state_soybean_net_benefit_10.svg', format='svg', dpi=300, bbox_inches='tight',
pad_inches=0.02, transparent=True)
# Show the plot
plt.show()
print(state_sum_10)
STATE1 net_benefits_mana_t15 net_benefits_mana_t3 p95_15 \ 12 Minnesota 113.933198 502.296025 0.559552 5 Illinois 61.373858 441.282809 8.167923 8 Kansas 103.797273 326.109733 6.792998 14 Missouri 54.985785 261.230989 6.969620 7 Iowa 54.947545 236.467103 1.656956 13 Mississippi 60.452380 191.944704 2.973462 1 Arkansas 167.328652 162.828080 7.589952 15 Nebraska 47.547352 138.706278 0.992300 21 Tennessee 38.383070 132.151016 4.913140 6 Indiana 48.531302 107.823475 0.125445 p5_15 p95_3 p5_3 12 0.000000 NaN NaN 5 7.898666 52.495032 51.241892 8 6.520600 22.765701 21.667251 14 7.767518 22.809020 21.829383 7 1.477534 15.552140 11.977874 13 3.396839 16.480167 17.704201 1 7.571588 103.073537 75.329180 15 1.127027 17.116757 18.550980 21 13.127720 8.502888 7.865612 6 0.212315 15.553114 14.857753