在 Python 中,Plotly 不尊重颜色字典
Color Dictionary is not respected by Plotly in Python
我正在使用 Streamlit 创建一个仪表板,我发现了一些奇怪的东西,我的情节是可视化一个聚类算法,其中包含一个用于聚类数量的交互式数字输入。所以我希望如果我有 2 个输入,我将始终获得与标记颜色相同的值。
但是,每次我与网站交互时,颜色都会发生变化,我必须为我的集群获取这些颜色。
def plot_model(cluster_model):
cluster_color_dict = {
1:'yellow',
2:'CornflowerBlue',
3:'orange',
4:'green',
5:'black',
6:'fuchsia',
7:'red',
8:'aqua',
9:'deepskyblue',
10:'greenyellow'
}
fig = px.scatter_3d(cluster_model,
x='NPHI',
y='RHOZ',
z='GR',
color='Clusters',
color_continuous_scale=list(cluster_color_dict.values()))
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.update_traces(marker_size=3)
return fig
无论如何,我想也许一种方法是简单地生成一个数字数组 trim 字典的长度,这样它总是具有用户要求的颜色?
我遇到的问题是字典包含 10 个元素,但是传递给创建图形的函数的元素数量较少,所以如果我想要颜色一致,我只需要传递数字元素然后过滤字典,这样我总是在我的图表中得到相同的配色方案:
def plot_model(cluster_model,k):
template = {
1:'yellow',
2:'CornflowerBlue',
3:'orange',
4:'green',
5:'black',
6:'fuchsia',
7:'red',
8:'aqua',
9:'deepskyblue',
10:'greenyellow'
}
i,j = 1,k
cluster_color_dict = {}
for k,v in template.items():
if int(k) >= i and int(k) <= j:
cluster_color_dict[k] = v
fig = px.scatter_3d(cluster_model,
x='NPHI',
y='RHOZ',
z='GR',
color='Clusters',
color_continuous_scale=list(cluster_color_dict.values()))
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.update_traces(marker_size=3)
return
我正在使用 Streamlit 创建一个仪表板,我发现了一些奇怪的东西,我的情节是可视化一个聚类算法,其中包含一个用于聚类数量的交互式数字输入。所以我希望如果我有 2 个输入,我将始终获得与标记颜色相同的值。
但是,每次我与网站交互时,颜色都会发生变化,我必须为我的集群获取这些颜色。
def plot_model(cluster_model):
cluster_color_dict = {
1:'yellow',
2:'CornflowerBlue',
3:'orange',
4:'green',
5:'black',
6:'fuchsia',
7:'red',
8:'aqua',
9:'deepskyblue',
10:'greenyellow'
}
fig = px.scatter_3d(cluster_model,
x='NPHI',
y='RHOZ',
z='GR',
color='Clusters',
color_continuous_scale=list(cluster_color_dict.values()))
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.update_traces(marker_size=3)
return fig
无论如何,我想也许一种方法是简单地生成一个数字数组 trim 字典的长度,这样它总是具有用户要求的颜色?
我遇到的问题是字典包含 10 个元素,但是传递给创建图形的函数的元素数量较少,所以如果我想要颜色一致,我只需要传递数字元素然后过滤字典,这样我总是在我的图表中得到相同的配色方案:
def plot_model(cluster_model,k):
template = {
1:'yellow',
2:'CornflowerBlue',
3:'orange',
4:'green',
5:'black',
6:'fuchsia',
7:'red',
8:'aqua',
9:'deepskyblue',
10:'greenyellow'
}
i,j = 1,k
cluster_color_dict = {}
for k,v in template.items():
if int(k) >= i and int(k) <= j:
cluster_color_dict[k] = v
fig = px.scatter_3d(cluster_model,
x='NPHI',
y='RHOZ',
z='GR',
color='Clusters',
color_continuous_scale=list(cluster_color_dict.values()))
fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.update_traces(marker_size=3)
return