Plotly:如何更改 plotly express 散点图的配色方案?
Plotly: How to change the colorscheme of a plotly express scatterplot?
我正在尝试使用 plotly
, specifically ploty express
构建一些可视化效果。
我正在建造的东西之一是 scatterplot
我在下面有一些代码,可以生成漂亮的散点图:
import plotly.graph_objs as go, pandas as pd, plotly.express as px
df = pd.read_csv('iris.csv')
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', marker_colorscale=px.colors.sequential.Viridis)
fig.show()
但是,我想尝试更改配色方案,即为每个物种呈现的颜色。
我已阅读:
- https://plotly.com/python/builtin-colorscales/
- https://plotly.com/python/colorscales/
- https://plotly.com/python/v3/colorscales/
但是不能得到颜色来改变。
正在尝试:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', marker_colorscale=px.colors.sequential.Viridis)
产量:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-78a9d58dce23> in <module>
2 # https://plotly.com/python/line-and-scatter/
3 fig = px.scatter(df, x='sepal_length', y='sepal_width',
----> 4 color='species', marker_colorscale=px.colors.sequential.Viridis)
5 fig.show()
TypeError: scatter() got an unexpected keyword argument 'marker_colorscale'
正在尝试
正在尝试:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', continuous_colorscale=px.colors.sequential.Viridis)
产量:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-78a9d58dce23> in <module>
2 # https://plotly.com/python/line-and-scatter/
3 fig = px.scatter(df, x='sepal_length', y='sepal_width',
----> 4 color='species', continuous_colorscale=px.colors.sequential.Viridis)
5 fig.show()
TypeError: scatter() got an unexpected keyword argument 'continuous_colorscale'
如何更改 plotly
可视化中使用的颜色?
您可以使用一种名为 color_discrete_map
的方法,它是 k,v
对的字典,其中 k
是颜色值,v
是配色方案.例如:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', color_discrete_map={'setosa': 'lightcyan',
'versicolor': 'royalblue', 'virginica': 'darkblue'})
一般情况下,为情节表达的图形更改配色方案非常straight-forward。造成这里问题的原因是 species
是一个 分类变量 。连续值或数值实际上更容易,但我们稍后会讲到。
对于分类值,使用 color_discrete_map
是一种完全有效的方法,尽管很麻烦。我更喜欢将关键字参数 continuous_colorscale
与 px.colors.qualitative.Antique
结合使用,其中 Antique
可以更改为 plotly express 中可用的任何 discrete color schemes。只是 运行 dir(px.colors.qualitative)
看看你在 运行ning:
的情节版本中有什么可用的
['Alphabet',
'Antique',
'Bold',
'D3',
'Dark2',
'Dark24',
'G10',......]
代码 1:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", color_discrete_sequence=px.colors.qualitative.Antique)
fig.show()
情节 1:
那么连续变量呢?
考虑以下片段:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="sepal_length", color_continuous_scale=px.colors.sequential.Viridis)
fig.show()
运行 这将产生这个情节:
您可以将颜色更改为 dir(px.colors.sequential)
下可用的任何其他主题,例如 color_continuous_scale=px.colors.sequential.Inferno
,并获得此图:
这里可能引起混淆的是,设置 color='species
并保持 color_continuous_scale=px.colors.sequential.Inferno
会给你这个情节:
该图现在直接跳回到使用默认绘图颜色,没有给你任何关于color_continuous_scale=px.colors.sequential.Inferno
的警告有作用。
这是因为 species
是一个具有这些不同值的分类变量:['setosa', 'versicolor', 'virginica']
,所以 color_continuous_scale
被简单地忽略了。要使 color_continuous_scale
生效,您必须使用数值,例如 sepal_length = [5.1, 4.9, 4.7, 4.6, 5. , 5.4, ...]
这让我们回到我对分类值的初始答案:
Use the keyword argument continuous_colorscale
in combination with
px.colors.qualitative
我正在尝试使用 plotly
, specifically ploty express
构建一些可视化效果。
我正在建造的东西之一是 scatterplot
我在下面有一些代码,可以生成漂亮的散点图:
import plotly.graph_objs as go, pandas as pd, plotly.express as px
df = pd.read_csv('iris.csv')
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', marker_colorscale=px.colors.sequential.Viridis)
fig.show()
但是,我想尝试更改配色方案,即为每个物种呈现的颜色。
我已阅读:
- https://plotly.com/python/builtin-colorscales/
- https://plotly.com/python/colorscales/
- https://plotly.com/python/v3/colorscales/
但是不能得到颜色来改变。
正在尝试:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', marker_colorscale=px.colors.sequential.Viridis)
产量:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-78a9d58dce23> in <module>
2 # https://plotly.com/python/line-and-scatter/
3 fig = px.scatter(df, x='sepal_length', y='sepal_width',
----> 4 color='species', marker_colorscale=px.colors.sequential.Viridis)
5 fig.show()
TypeError: scatter() got an unexpected keyword argument 'marker_colorscale'
正在尝试
正在尝试:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', continuous_colorscale=px.colors.sequential.Viridis)
产量:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-78a9d58dce23> in <module>
2 # https://plotly.com/python/line-and-scatter/
3 fig = px.scatter(df, x='sepal_length', y='sepal_width',
----> 4 color='species', continuous_colorscale=px.colors.sequential.Viridis)
5 fig.show()
TypeError: scatter() got an unexpected keyword argument 'continuous_colorscale'
如何更改 plotly
可视化中使用的颜色?
您可以使用一种名为 color_discrete_map
的方法,它是 k,v
对的字典,其中 k
是颜色值,v
是配色方案.例如:
fig = px.scatter(df, x='sepal_length', y='sepal_width',
color='species', color_discrete_map={'setosa': 'lightcyan',
'versicolor': 'royalblue', 'virginica': 'darkblue'})
一般情况下,为情节表达的图形更改配色方案非常straight-forward。造成这里问题的原因是 species
是一个 分类变量 。连续值或数值实际上更容易,但我们稍后会讲到。
对于分类值,使用 color_discrete_map
是一种完全有效的方法,尽管很麻烦。我更喜欢将关键字参数 continuous_colorscale
与 px.colors.qualitative.Antique
结合使用,其中 Antique
可以更改为 plotly express 中可用的任何 discrete color schemes。只是 运行 dir(px.colors.qualitative)
看看你在 运行ning:
['Alphabet',
'Antique',
'Bold',
'D3',
'Dark2',
'Dark24',
'G10',......]
代码 1:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", color_discrete_sequence=px.colors.qualitative.Antique)
fig.show()
情节 1:
那么连续变量呢?
考虑以下片段:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="sepal_length", color_continuous_scale=px.colors.sequential.Viridis)
fig.show()
运行 这将产生这个情节:
您可以将颜色更改为 dir(px.colors.sequential)
下可用的任何其他主题,例如 color_continuous_scale=px.colors.sequential.Inferno
,并获得此图:
这里可能引起混淆的是,设置 color='species
并保持 color_continuous_scale=px.colors.sequential.Inferno
会给你这个情节:
该图现在直接跳回到使用默认绘图颜色,没有给你任何关于color_continuous_scale=px.colors.sequential.Inferno
的警告有作用。
这是因为 species
是一个具有这些不同值的分类变量:['setosa', 'versicolor', 'virginica']
,所以 color_continuous_scale
被简单地忽略了。要使 color_continuous_scale
生效,您必须使用数值,例如 sepal_length = [5.1, 4.9, 4.7, 4.6, 5. , 5.4, ...]
这让我们回到我对分类值的初始答案:
Use the keyword argument
continuous_colorscale
in combination withpx.colors.qualitative