python - 在 Plotly 中,如何在组中使用色标时为图例点选择特定颜色?
问题描述
我正在 Plotly 中绘制一个 3d 散点图,类似于下面的示例。(尽管在实际图中,我在各个图层中绘制了更多数据组,因此图例中有多个条目。)我必须将色阶中的颜色添加到每组点。这有一个不幸的副作用,即导致图例中散点中的颜色本质上是该色标中的随机颜色,而不是指定的颜色(例如,在较暗的一端)。要查看此效果,请更改_ = nprand.sample(1)
行中的数字几次,您应该会看到图例点中的蓝色阴影发生了变化。
import plotly.graph_objects as go
import numpy as np
import numpy.random as nprand
nprand.seed(1)
x = nprand.sample(100)
y = nprand.sample(100)
z = nprand.sample(100)
_ = nprand.sample(1)
color = nprand.sample(100)
trace = go.Scatter3d(x=x,
y=y,
z=z,
name="sample",
mode='markers',
marker=dict(
symbol='circle',
size=20,
color=color,
colorscale="Blues"))
fig = go.Figure(trace)
fig.update_layout(showlegend=True, legend=dict(bordercolor='black', itemwidth=100))
fig.show()
如何为图例中的点指定特定颜色?
解决方案
通常,图例元素的标题和颜色反映了它们所代表的迹线的属性。所以,如果你有blue
踪迹,你就会得到一个blue
传奇。在您在此处描述的情况下,图例的颜色会有所不同,因为与特定值关联的颜色会有所不同。而那个特殊的价值似乎是第一个元素:
fig.data[0].marker.color
示例内容:
array([0.8118587 , 0.87496164, 0.68841325, 0.56949441, 0.16097144,
0.46688002, 0.34517205, 0.22503996, 0.59251187, 0.31226984,
0.91630555, 0.90963552, 0.25711829, 0.1108913 , 0.19296273,
0.49958417, 0.72858567, 0.20819444, 0.24803356, 0.85167187,
0.41584872, 0.61668507, 0.23366614, 0.10196726, 0.51585702,
0.47714099, 0.15267164, 0.62180623, 0.54401012, 0.65413735,
0.14454554,
因此,在您的情况下,您可以将第一个元素设置为1
在图例中获得较深的颜色。或者0
在图例中获得较浅的颜色。像这样的方法当然有很多缺点,但这就是它的工作原理。
黑暗的fig.data[0].marker.color[0] = 1
光fig.data[0].marker.color[0] = 0
完整代码:
import plotly.graph_objects as go
import numpy as np
import numpy.random as nprand
nprand.seed(1)
x = nprand.sample(100)
y = nprand.sample(100)
z = nprand.sample(100)
# _ = nprand.sample(1)
color = nprand.sample(100)
trace = go.Scatter3d(x=x,
y=y,
z=z,
name="sample",
mode='markers',
marker=dict(
symbol='circle',
size=20,
color=color,
colorscale="Blues"))
fig = go.Figure(trace)
fig.update_layout(showlegend=True, legend=dict(bordercolor='black', itemwidth=100))
fig.data[0].marker.color[0] = 0
fig.show()
推荐阅读
- android-studio - 在 Android Studio Emulator MacBook M1 上安装 Google Play 应用程序/服务
- python - ImageField 使用 Django Admin 上传,但不使用模板
- java - 任务':app:kaptDebugKotlin'的错误MyApplication执行失败
- android - 尝试使用视图绑定时出现 groovy.lang.MissingMethodException
- javascript - 当悬停到特定块(div)[工作]时尝试更改部分的背景
- r - 从R中的特定列中删除单元格中的重复项?
- css - 如何更改 cshtml 文件标题部分的属性?
- javascript - jcrop宽度,高度通过输入数值调整?
- domexception - 当链接单击的元素正在动画并停止时
- numpy - 从 numpy 中提取行并将行添加到特定索引