Har*_*riS 3 python plotly plotly-python
我想更改图例中项目的名称。下面是一个可重现的例子。
import plotly.express as px
df = px.data.iris()
colorsIdx = {'setosa': '#c9cba3', 'versicolor': '#ffe1a8',
'virginica': '#e26d5c'}
cols = df['species'].map(colorsIdx)
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color=cols)
fig.show()
Run Code Online (Sandbox Code Playgroud)
因为我将自己的颜色分配给了我想重命名图例的物种,所以它不会显示为“#c9cba3”、“#ffe1a8”和“#e26d5c”。相反,我想成为“setosa”“versicolor”和“virginica”
一般来说,您可以使用:
fig.for_each_trace(lambda t: t.update(name = newnames[t.name]))
Run Code Online (Sandbox Code Playgroud)
在您的情况下,newnames将是dict:
{'#c9cba3': 'setosa', '#ffe1a8': 'versicolor', '#e26d5c': 'virginica'}
Run Code Online (Sandbox Code Playgroud)
并且您已经在 中指定了一个具有类似信息的字典colorsIdx,因此您只需要切换keys并values使用:
newnames = {y:x for x,y in colorsIdx.items()}
Run Code Online (Sandbox Code Playgroud)
但是,您应该知道这里还有更多内容!在 中px.scatter(),该color参数与实际颜色几乎没有关系,而是与 Pandas 数据框中的哪个变量相关,以寻找唯一值以分配颜色。看看当你改变你的时候会发生什么:
colorsIdx = {'setosa': '#c9cba3', 'versicolor': '#ffe1a8',
'virginica': '#e26d5c'}
Run Code Online (Sandbox Code Playgroud)
...到:
colorsIdx = {'setosa': '#magic', 'versicolor': '#color',
'virginica': '#function'}
Run Code Online (Sandbox Code Playgroud)
由于我最初的解释,您的示例图中的颜色非常相同:
要真正在你的情况下,使用指定的颜色color_discrete_map=dict(),并使用color了species变量。通过这种方式,您实际上可以定义所需的颜色,而不必重命名图例元素。
阴谋:
完整代码:
import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='species',
color_discrete_map={'setosa': 'steelblue',
'versicolor': 'firebrick',
'virginica': 'green'})
fig.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2952 次 |
| 最近记录: |