- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有许多问题和答案以一种或另一种方式涉及这个主题。有了这个贡献,我想清楚地说明为什么一个简单的方法,比如 marker = {'color' : 'red'}
将适用于 plotly.graph_objects (go)
,但是 color='red'
不会为 plotly.express (px)
虽然颜色是 px.Line
的一个属性和 px.Scatter
. 和 我想证明为什么它没有那么棒。
所以,如果 px
应该是 easiest way to make a plotly figure ,那么为什么会出现像 color='red'
这样显而易见的事情?返回错误
ValueError: Value of 'color' is not the name of a column in 'data_frame'.
Life expectancy
的散点图与
GDP per capita
适用于截至
2007
的全局所有(至少大多数)国家/地区.像下面这样的基本设置将产生以下图
go
绘图:
marker = {'color' : 'red'}
图2,代码:
import plotly.graph_objects as go
df = px.data.gapminder()
df=df.query("year==2007")
fig = go.Figure()
fig.add_traces(go.Scatter(x=df['gdpPercap'], y=df["lifeExp"],
mode = 'markers',
marker = {'color' : 'red'}
))
fig.show()
所以让我们用
px
试试这个,并假设
color='red'
会做的伎俩:
px
定义颜色的散点图:
# imports
import plotly.express as px
import pandas as pd
# dataframe
df = px.data.gapminder()
df=df.query("year==2007")
# plotly express scatter plot
px.scatter(df, x="gdpPercap", y="lifeExp",
color = 'red',
)
结果:
ValueError: Value of 'color' is not the name of a column in'data_frame'. Expected one of ['country', 'continent', 'year','lifeExp', 'pop', 'gdpPercap', 'iso_alpha', 'iso_num'] but received:red
最佳答案
首先,如果解释go
之间更广泛的差异和 px
为必填项,请看 here和 here .如果绝对不需要解释,你会在答案的最后找到一个完整的代码片段,它将揭示 plotly.express 中的许多颜色的权力
第 1 部分:本质:
乍一看可能不是这样,但 color='red'
是有充分理由的。使用 px
时不会像您期望的那样工作.但首先,如果您只想做 manually set a particular color for all markers您可以使用 .update_traces(marker=dict(color='red'))
这样做感谢 pythons chaining method .但首先,让我们看看默认设置:
1.1 绘图表达默认值
图1,px默认散点图使用px.Scatter
代码 1,px 默认散点图使用 px.Scatter
# imports
import plotly.express as px
import pandas as pd
# dataframe
df = px.data.gapminder()
df=df.query("year==2007")
# plotly express scatter plot
px.scatter(df, x="gdpPercap", y="lifeExp")
在这里,正如问题中已经提到的,颜色被设置为默认绘图序列中的第一种颜色,可通过
px.colors.qualitative.Plotly
获得。 :
['#636EFA', # the plotly blue you can see above
'#EF553B',
'#00CC96',
'#AB63FA',
'#FFA15A',
'#19D3F3',
'#FF6692',
'#B6E880',
'#FF97FF',
'#FECB52']
这看起来很不错。但是,如果您想更改内容甚至同时添加更多信息,该怎么办?
px.scatter
,
color
属性不采用类似
red
的颜色作为论据。相反,您可以例如使用
color='continent'
轻松区分数据集中的不同变量。但是
px
中的颜色还有很多:
1
的组合。和
3
.但我们稍后会谈到这一点。这是你需要知道的:
color_discrete_sequence=px.colors.qualitative.Alphabet
2. 使用
color
为不同的变量分配不同的颜色争论
color = 'continent'
3. 自定义一种或多种可变颜色
color_discrete_map={"Asia": 'red'}
4. 使用 dict comprehension 和
color_discrete_map
轻松对更大的变量子集进行分组
subset = {"Asia", "Africa", "Oceania"}
group_color = {i: 'red' for i in subset}
5. 使用
rgba()
设置不透明度颜色代码。
color_discrete_map={"Asia": 'rgba(255,0,0,0.4)'}
6. 使用以下命令覆盖所有设置:
.update_traces(marker=dict(color='red'))
import plotly.express as px
import pandas as pd
# dataframe, input
df = px.data.gapminder()
df=df.query("year==2007")
px.scatter(df, x="gdpPercap", y="lifeExp",
color = 'continent',
size='pop',
)
为了说明上述方法的灵活性,让我们先来
更改颜色顺序 .由于我们初学者只展示了一种类别和一种颜色,因此您必须等待后续步骤才能看到真正的效果。但现在这里的 plotly 与
color_discrete_sequence=px.colors.qualitative.Alphabet
相同按照步骤 1:
color_discrete_sequence=px.colors.qualitative.Alphabet
Alphabet
中的颜色不同大陆的颜色顺序:
color
为不同的变量分配不同的颜色争论
color = 'continent'
color_discrete_map={"Asia": 'red'}
color_discrete_map
为组分配颜色
# imports
import plotly.express as px
import pandas as pd
# dataframe
df = px.data.gapminder()
df=df.query("year==2007")
subset = {"Asia", "Europe", "Oceania"}
group_color = {i: 'red' for i in subset}
# plotly express scatter plot
px.scatter(df, x="gdpPercap", y="lifeExp",
size='pop',
color='continent',
color_discrete_sequence=px.colors.qualitative.Alphabet,
color_discrete_map=group_color
)
rgba()
设置不透明度颜色代码。
red
很适合亚洲,但可能有点太强了,您可以使用
rgba
调整不透明度。颜色如
'rgba(255,0,0,0.4)'
得到这个:
import plotly.express as px
import pandas as pd
# dataframe, input
df = px.data.gapminder()
df=df.query("year==2007")
px.scatter(df, x="gdpPercap", y="lifeExp",
color_discrete_sequence=px.colors.qualitative.Alphabet,
color = 'continent',
size='pop',
color_discrete_map={"Asia": 'rgba(255,0,0,0.4)'}
)
如果您认为我们现在变得有点太复杂了,您可以再次覆盖所有设置:
.update_traces(marker=dict(color='red'))
# imports
import plotly.express as px
import pandas as pd
# dataframe
df = px.data.gapminder()
df=df.query("year==2007")
subset = {"Asia", "Europe", "Oceania"}
group_color = {i: 'red' for i in subset}
# plotly express scatter plot
px.scatter(df, x="gdpPercap", y="lifeExp",
size='pop',
color='continent',
color_discrete_sequence=px.colors.qualitative.Alphabet,
#color_discrete_map=group_color
color_discrete_map={"Asia": 'rgba(255,0,0,0.4)'}
)#.update_traces(marker=dict(color='red'))
关于python - Plotly:如何使用 plotly.graph_objects 和 plotly.express 在图形中定义颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63460213/
但是,当我生成图表时,这条线并没有结束,我尝试了很多方法,但没有任何效果。 r 中的内容是我用已定义的值声明的一些变量 fig = go.Figure() fig.add_trace(go.Scatt
从我复制到自己服务器的已知公共(public)数据集开始。 数据集在这里:https://www.kaggle.com/imdevskp/corona-virus-report/download im
我正在使用 plotly.go 制作表格并导出为 html,但是表格上的列不是静态的,可以用鼠标拖动和重新排列。我正在尝试找到一种简单的方法来使表格静态化,同时仍将其导出为 html。 import
我的数据框看起来像这样: user age gender 0 23 12 male 1 24 13 male 2 25 15
如果你看这里:https://plotly.com/python/treemaps/#nested-layers-in-treemap ,看图: 注意第二个小块中的小文本。您几乎看不到它,因为文本是“
尝试使用 'plotly.graph_objects'但我得到这个错误 ModuleNotFoundError: No module named 'plotly.graph_objects' 如何下载
我通过将plotly代码片段评估为Kusto查询到Azure Data Explorer (ADX),成功创建了一个散点图: let varName = ```if 1: import
如果我使用 plotly express 子模块,我可以通过以下方式创建彩色旭日图: import plotly.express as px names = ["Eve", "Cain", "Seth
我正在可视化包含 40 万到 250 万个点的散点图。我预计需要在可视化之前进行下采样,但要看看我用 plotly express 中的 400k 数据集运行了多少试点测试,并且快速、精美且响应迅速地
Python Flask 中的后端 我正在尝试在 Plot.Js 中使用 go.Figure 的输出。格式看起来没问题。我尝试使用 fig.to_json 和 fig.to_dict()。还是行不通。
有许多问题和答案以一种或另一种方式涉及这个主题。有了这个贡献,我想清楚地说明为什么一个简单的方法,比如 marker = {'color' : 'red'}将适用于 plotly.graph_obje
我是一名优秀的程序员,十分优秀!