我看到了一些关于在matplotlib中绘制两个hexbin地图之间差异的帖子。但是我找不到任何执行相同过程但用于Plotly hexbin地图箱线图的内容。如果我有两个单独的hexbin子图 (t, y)
,是否可能生成一个单一的图形来计算t
和y
之间的差异?
import pandas as pd
import plotly.express as px
import plotly.graph_objs as go
import plotly.figure_factory as ff
from plotly.subplots import make_subplots
data = pd.DataFrame({
'Cat': ['t','y','y','t','t','t','t','y','y','y','t','y'],
'LAT': [5,6,7,5,6,7,5,6,7,5,6,7],
'LON': [10,11,12,10,11,12,10,11,12,10,11,12],
})
data = pd.concat([data]*5)
df_t = data[data['Cat'] == 't']
df_y = data[data['Cat'] == 'y']
fig = make_subplots(
rows = 2,
cols = 1,
subplot_titles = ('t', 'y'),
specs = [[{"type": "choroplethmapbox"}], [{"type": "choroplethmapbox"}]],
vertical_spacing = 0.05,
horizontal_spacing = 0.05
)
fig2 = ff.create_hexbin_mapbox(data_frame=df_t,
lat="LAT", lon="LON",
nx_hexagon=5,
opacity=0.5,
labels={"color": "Point Count"},
mapbox_style='carto-positron',
)
fig3 = ff.create_hexbin_mapbox(data_frame=df_y,
lat="LAT", lon="LON",
nx_hexagon=5,
opacity=0.5,
labels={"color": "Point Count"},
mapbox_style='carto-positron',
)
fig.add_trace(fig2.data[0], row=1,col=1)
fig.update_mapboxes(zoom=4, style='carto-positron')
fig.add_trace(fig3.data[0], row=2,col=1)
fig.update_mapboxes(zoom=4, style='carto-positron')
fig.update_layout(height=600, margin=dict(t=20,b=0,l=0,r=0))
fig.show()
预期的输出:
t
的左下角垃圾桶有15个点,而y
只有5个。因此这将总计为10。中间箱有10个点,所以结果为0。右上方的箱子中有5个t
和15个y
,总计为-10。但我将把 vmin
设为0,以确保没有负值。
编辑2:
如果我使用不同大小的数组更改输入数据并将min_count = 1作为参数包含在内,则会返回错误。
data = pd.DataFrame({
'Cat': ['t','y','y','t','t','t','t','y','y','y','t','y','y'],
'LAT': [5,6,7,5,6,7,5,6,7,5,6,7,8],
'LON': [10,11,12,10,11,12,10,11,12,10,11,12,8],
})
---------------------------------------------------------------------------
ValueError Traceback (most recent call last) /var/folders/bf/09nyl3td65j2lty5m7138ndw0000gn/T/ipykernel_78237/2142200526.py in <module>
47
48 fig = go.Figure(fig2)
---> 49 fig.data[0]['z'] = (fig2.data[0]['z'] - fig3.data[0]['z']).clip(min=0)
50 cmax, cmin = max(fig.data[0]['z']), min(fig.data[0]['z'])
51
ValueError: operands could not be broadcast together with shapes (3,) (4,)
df_t
е’Ңdf_y
д№Ӣй—ҙзҡ„е·®ејӮеҲӣе»әеҸҰдёҖдёӘFigure Factory Hexbin Mapboxе‘ўпјҹжӯӨеӨ–пјҢйў„жңҹзҡ„иҫ“еҮәжҳҜеҚ•дёӘеӣҫеҪўиҝҳжҳҜеңЁеҪ“еүҚдёӨдёӘеӣҫеҪўдёӢж–№ж·»еҠ дёҖдёӘйҷ„еҠ еӣҫеҪўпјҹ - Derek O