小编Eli*_*sky的帖子

将日期添加到悬停模板中

我对情节非常陌生,在格式化悬停信息时遇到了一些麻烦。我正在尝试使用hovertemplate来提供我想要的特定文本,而不是图形自动格式。我想提供日期列表以及值和一些附加文本。但是,当尝试提供日期时,它似乎没有格式化。我尝试从情节文档中做一个确切的例子,我将在下面展示。

import plotly.graph_objs as go

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=dict2['time'],
               y=dict2['2m_temp_prod'],
               mode='markers+lines',
               name='Sfc Temp',
               line=dict(color='red', width=4),
               hovertemplate='Day: %{2019-01-01|%A}'))
Run Code Online (Sandbox Code Playgroud)

悬停文本无法正确转换日期,而是显示 Day: %{2019-01-01|%A}。有想法该怎么解决这个吗?

编辑:这是一个更可行的示例。

我从 xarray 数据数组加载一些数据并将其转换为字典。

dict2

{'time': 0    2020-08-12 00:00:00
 1    2020-08-12 06:00:00
 2    2020-08-12 12:00:00
 3    2020-08-12 18:00:00
 4    2020-08-13 00:00:00
              ...        
 56   2020-08-26 00:00:00
 57   2020-08-26 06:00:00
 58   2020-08-26 12:00:00
 59   2020-08-26 18:00:00
 60   2020-08-27 00:00:00
 Name: time, Length: 61, dtype: datetime64[ns],
 '2m_temp_prod': 0     84.0
 1     74.0
 2     71.0
 3     82.0
 4     79.0
       ... 
 56    79.0 …
Run Code Online (Sandbox Code Playgroud)

python plotly

6
推荐指数
1
解决办法
2472
查看次数

使用 Cartopy 添加网格线

我正在尝试将网格线添加到我使用 Cartopy 制作的地图中,但是,当我使用 Cartopy 文档中的示例代码时,它没有显示我想要的内容,我无法弄清楚如何操作它来这样做.

def plotMap():

    proj = ccrs.Mercator(central_longitude=180, min_latitude=15, 
    max_latitude=55)

    fig, ax = plt.subplots(subplot_kw=dict(projection=proj), figsize=(12,12))

    ax.set_extent([255 ,115, 0, 60], crs=ccrs.PlateCarree())

    ax.add_feature(cfeature.LAND, facecolor='0.3')
    ax.add_feature(cfeature.LAKES, alpha=0.9)  
    ax.add_feature(cfeature.BORDERS, zorder=10)
    ax.add_feature(cfeature.COASTLINE, zorder=10)


    #(http://www.naturalearthdata.com/features/)
    states_provinces = cfeature.NaturalEarthFeature(
            category='cultural',  name='admin_1_states_provinces_lines',
            scale='50m', facecolor='none')
    ax.add_feature(states_provinces, edgecolor='black', zorder=10)

    #ax.gridlines(xlocs=grids_ma, ylocs=np.arange(-80,90,20), zorder=21, 
    draw_labels=True ) 
    ax.gridlines(crs=ccrs.PlateCarree(), linewidth=2, color='black', 
    draw_labels=True, alpha=0.5, linestyle='--')
    ax.xlabels_top = False
    ax.ylabels_left = False
    ax.ylabels_right=True
    ax.xlines = True
    ax.xlocator = mticker.FixedLocator([-160, -140, -120, 120, 140, 160, 180,])
    ax.xformatter = LONGITUDE_FORMATTER
    ax.yformatter = LATITUDE_FORMATTER
    ax.xlabel_style = {'size': …
Run Code Online (Sandbox Code Playgroud)

matplotlib cartopy

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

将 DataArray 转换为 numpy 数组

我有一个 DataArray,我想将其转换为 numpy 数组。作为参考,它是一个包含(时间、纬度、经度)的三维网格数据集。我尝试使用 xarray.DataArray.values(),但收到错误: TypeError: 'property' object is not callable。

我想将其转换为 numpy 数组,因为我使用的函数利用了重塑功能,并且无法与 DataArray 一起正常工作。我尝试使用 np.array() 将其简单地转换为 numpy 数组,但它会将每个值转换为 NaN。

datatlt=xr.open_dataset("/nfs/home11/staff/lzhou/Public/Satellite_data/RSS_Tb_Anom_Maps_ch_TLT_V4_0.nc", decode_times=False)

tlt=datatlt['brightness_temperature'].sel(months=slice(121,492))
tlt2=np.ma.masked_invalid(tlt)

tlt2=xr.DataArray.values(tlt2)
Run Code Online (Sandbox Code Playgroud)

python numpy python-xarray

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

更改线图中特定线的线宽 pandas/matplotlib

我正在绘制一个看起来像这样的数据框。

Date    2011    2012    2013    2014    2015    2016    2017    2018    2019    2020
Date                                        
01 Jan  12.896  13.353  12.959  13.011  13.073  12.721  12.643  12.484  12.876  13.102
02 Jan  12.915  13.421  12.961  13.103  13.125  12.806  12.644  12.600  12.956  13.075
03 Jan  12.926  13.379  13.012  13.116  13.112  12.790  12.713  12.634  12.959  13.176
04 Jan  13.051  13.414  13.045  13.219  13.051  12.829  12.954  12.724  13.047  13.187
05 Jan  13.176  13.417  13.065  13.148  13.115  12.874  12.956  12.834  13.098  13.123
Run Code Online (Sandbox Code Playgroud)

绘图代码在这里。

ice_data_dates.plot(figsize=(20,12), title='Arctic Sea Ice Extent', lw=3, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib dataframe pandas

4
推荐指数
2
解决办法
1965
查看次数

仅当它们在附近时才从点列表创建多边形

我有一个点列表(经度和纬度),以及它们在地理数据框中的关联点几何。所有的点都应该能够细分为单独的多边形,因为这些点通常聚集在几个区域中。我想做的是有某种算法来遍历点并检查前一个点和当前点之间的距离。如果距离足够小,它会将这些点组合在一起。这个过程会一直持续到当前点离得太远。它会从这些接近的点中创建一个多边形,然后用下一组点继续这个过程。

gdf
longitude   latitude    geometry
0   -76.575249  21.157229   POINT (-76.57525 21.15723)
1   -76.575035  21.157453   POINT (-76.57503 21.15745)
2   -76.575255  21.157678   POINT (-76.57526 21.15768)
3   -76.575470  21.157454   POINT (-76.57547 21.15745)
5   -112.973177 31.317333   POINT (-112.97318 31.31733)
... ... ... ...
2222    -113.492501 47.645914   POINT (-113.49250 47.64591)
2223    -113.492996 47.643609   POINT (-113.49300 47.64361)
2225    -113.492379 47.643557   POINT (-113.49238 47.64356)
2227    -113.487443 47.643142   POINT (-113.48744 47.64314)
2230    -105.022627 48.585669   POINT (-105.02263 48.58567)
Run Code Online (Sandbox Code Playgroud)

所以在上面的数据中,前 4 个点将组合在一起并变成一个多边形。然后,它将移动到下一组,依此类推。每组点不是均匀分布的,即下一组可能是 7 对点,接下来可能是 3 对。理想情况下,最终输出将是另一个地理数据框,它只是一堆多边形。

python pandas shapely geopandas

2
推荐指数
1
解决办法
579
查看次数