gpt4 book ai didi

python - 如何在 plotly scattergeo 美国 map 中使用离散色标

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:53 25 4
gpt4 key购买 nike

当我使用 plotly(在 python 中)时,我正在尝试使用离散色阶。我需要一个离散色标,因为我为特定城市绘制的某些值与所有其他城市相比太大了,因此离散色标可以帮助我轻松地可视化所有值。这是一个更好地解释我的情况的例子:我有一个数据集,其中包含按城市(在美国)划分的某些事件的详细信息。该事件在纽约市发生了 50000 次,而在美国其他城市,同一事件发生的次数不到 1000 次。当我使用连续色标时,所有其他城市的值都下降到低端,纽约市是唯一使用色标顶部颜色的值。

提前感谢您的帮助!此致,里沙布

最佳答案

对于几个商店的 10 个不同的集群 ID,我就是这样生成 10 个离散的自定义色标的:

import matplotlib

def matplotlib_to_plotly(cmap, pl_entries):
# Converts matplotlib colormap to plotly colormap. It also shuffles the color map

h = 1.0/(pl_entries)
pl_colorscale = []
c_order = h * np.arange(pl_entries+1)
c_order_shuffled = c_order.copy()
# Shuffles the colormap
np.random.shuffle(c_order_shuffled)
for i in range(pl_entries):
C = map(np.uint8, np.array(cmap(c_order_shuffled[i])[:3])*255)
pl_colorscale.append([c_order[i], 'rgb'+str((C[0], C[1], C[2]))])
# To have clear boundaries between colors in the colorbar
if i < (pl_entries):
pl_colorscale.append([c_order[i+1], 'rgb'+str((C[0], C[1], C[2]))])
return pl_colorscale

# Sets the colormap of your choice
cmap = matplotlib.cm.get_cmap('jet')
# Passes the number of distinct colors you need to generate. In this case we have 10 cluster ids in stores_info_df
custom_colorscale = matplotlib_to_plotly(cmap, stores_info_df['CLUSTER_ID'].max())
custom_colorscale

enter image description here

然后,我在 plot 函数中使用了上面的色标:

def visualize_geo_store_clusters(stores_info_df, fig_name='store_similarity_US_map', cluster_id = 'CLUSTER_ID'):

max_cluster_id = stores_info_df[cluster_id].max()

data = [ dict(
type = 'scattergeo',
locationmode = 'USA-states',
lon = stores_info_df['LONGTITUDE'],
lat = stores_info_df['LATITUDE'],
text = stores_info_df['TEXT'],
mode = 'markers',
marker = dict(
colorscale= custom_colorscale,
cmin = stores_info_df[cluster_id].min(),
color = stores_info_df[cluster_id],
cmax = max_cluster_id,
colorbar = dict(
title = 'Cluster ID',
titleside = 'top',
tickmode = 'array',
tickvals = np.arange(1, max_cluster_id+1),
ticktext = np.arange(1, max_cluster_id+1),
#ticks = 'outside',
)

))]

layout = dict(
title = 'Similarity between Stores',
geo = dict(
scope='usa',
projection=dict( type='albers usa' ),
showland = True,
landcolor = "rgb(250, 250, 250)",
subunitcolor = "rgb(217, 217, 217)",
countrycolor = "rgb(217, 217, 217)",
countrywidth = 0.5,
subunitwidth = 0.5
),
)

fig = dict(data=data, layout=layout)
plotly.offline.iplot(fig, validate=False)

它生成以下图。

enter image description here

关于python - 如何在 plotly scattergeo 美国 map 中使用离散色标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com