小编Sej*_*eji的帖子

Matplotlib,图例符号之间的垂直空间

我在自定义我的情节图例时遇到问题。我做了很多定制,但无法理解这一点。我希望符号(不是标签)在图例中等距。正如您在示例中看到的,图例中圆圈之间的空间随着圆圈变大而变小。有任何想法吗?此外,我如何还添加一个颜色条(除了大小),较小的圆圈为浅红色(例如),较大的圆圈为蓝色(例如)这是我目前的代码:

import pandas as pd
import matplotlib.pyplot as plt
from vega_datasets import data as vega_data
gap = pd.read_json(vega_data.gapminder.url)

df = gap.loc[gap['year'] == 2000]

fig, ax = plt.subplots(1, 1,figsize=[14,12])
ax=ax.scatter(df['life_expect'], df['fertility'], 
            s = df['pop']/100000,alpha=0.7, edgecolor="black",cmap="viridis")

plt.xlabel("X")
plt.ylabel("Y");
kw = dict(prop="sizes", num=6, color="lightgrey", markeredgecolor='black',markeredgewidth=2)
plt.legend(*ax.legend_elements(**kw),bbox_to_anchor=(1, 0),frameon=False,
                    loc="lower left",markerscale=1,ncol=1,borderpad=2,labelspacing=4,handletextpad=2)

plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python matplotlib legend pandas

7
推荐指数
1
解决办法
223
查看次数

从 NETCDF 文件中提取数据的有效方法

我有许多坐标(大约 20000 个),我需要从许多 NetCDF 文件中提取数据,每个文件大约有 30000 个时间步长(未来的气候情景)。使用此处的解决方案效率不高,原因是每个 i,j 将“dsloc”转换为“dataframe”所花费的时间(请查看下面的代码)。** 可以从此处下载 NetCDF 文件示例**

import pandas as pd
import xarray as xr
import time

#Generate some coordinates
coords_data = [{'lat': 68.04, 'lon': 15.20, 'stid':1},
    {'lat':67.96, 'lon': 14.95, 'stid': 2}]
crd= pd.DataFrame(coords_data)
lat = crd["lat"]
lon = crd["lon"]
stid=crd["stid"]

NC = xr.open_dataset(nc_file)
point_list = zip(lat,lon,stid)
start_time = time.time()
for i,j,id in point_list:
    print(i,j)
    dsloc = NC.sel(lat=i,lon=j,method='nearest')
    print("--- %s seconds ---" % (time.time() - start_time))
    DT=dsloc.to_dataframe()
    DT.insert(loc=0,column="station",value=id)
    DT.reset_index(inplace=True)
    temp=temp.append(DT,sort=True)
    print("--- …
Run Code Online (Sandbox Code Playgroud)

python netcdf nco python-xarray cdo-climate

7
推荐指数
1
解决办法
2535
查看次数

Python 使用 xarray 从 NETCDF 文件中提取多个纬度/经度

我有一个 NC 文件(时间、纬度、经度)从这里下载,我正在尝试提取多个站点的时间序列(纬度/经度点从这里下载)。所以我尝试用这种方式读取坐标并从 NC 文件中提取最接近的值:

import pandas as pd
import xarray as xr
nc_file = r"C:\Users\lab\Desktop\harvey\example.nc"
NC = xr.open_dataset(nc_file)
csv = r"C:\Users\lab\Desktop\harvey\stations.csv"
df = pd.read_csv(csv,delimiter=',')
Newdf = pd.DataFrame([])
# grid point lists
lat = df["Lat"]
lon = df["Lon"]
point_list = zip(lat,lon)
for i, j in point_list:
    dsloc = NC.sel(lat=i,lon=j,method='nearest')
    DT=dsloc.to_dataframe()
    Newdf=Newdf.append(DT,sort=True)
Run Code Online (Sandbox Code Playgroud)

该代码工作正常并返回:

                        EVP     lat      lon
time                                        
2019-01-01 19:00:00  0.0546  40.063  -88.313
2019-01-01 23:00:00  0.0049  40.063  -88.313
2019-01-01 19:00:00  0.0052  41.938  -93.688
2019-01-01 23:00:00  0.0029  41.938  -93.688 …
Run Code Online (Sandbox Code Playgroud)

python netcdf data-extraction pandas python-xarray

4
推荐指数
1
解决办法
2408
查看次数