Plotly:如何使用plotly.graph_objects和plotly.express在图形中定义颜色? 图1,使用go绘制的图形:图2,代码:代码2,尝试使用px使用定义的颜色散点图:结果: 1.1表示默认值图1,使用px.Scatter的px默认散点图代码1,使用px.Scatter的px默认散点图图2:代码2:最后一个图的完整代码:完整的代码段以及所有可用选项:

如何解决Plotly:如何使用plotly.graph_objects和plotly.express在图形中定义颜色? 图1,使用go绘制的图形:图2,代码:代码2,尝试使用px使用定义的颜色散点图:结果: 1.1表示默认值图1,使用px.Scatter的px默认散点图代码1,使用px.Scatter的px默认散点图图2:代码2:最后一个图的完整代码:完整的代码段以及所有可用选项:

有许多问题和答案以某种方式涉及到该主题。通过此贡献,我想清楚地说明为什么marker = {'color' : 'red'}这样的简单方法对plotly.graph_objects (go)有用,而color='red'plotly.express (px)却不起作用,尽管颜色是px.Linepx.Scatter 还有 我想证明为什么它很棒。


因此,如果假设pxeasiest way to make a plotly figure,那么为什么像color='red'这样明显的东西会返回错误

ValueError:“ color”的值不是“ data_frame”中列的名称。

让我通过applyig演示一个gapminder数据集,并显示世界上所有(至少 个)国家的Life expectancyGDP per capita的散点图2007中的。如下所示的基本设置将产生以下图

图1,使用go绘制的图形:

enter image description here

颜色由一个名为plotly的循环设置,但此处使用 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'会成功:

代码2,尝试使用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:“ color”的值不是其中的列名称 'data_frame'。预期为['国家/地区,'大陆','年份', 'lifeExp','pop','gdpPercap','iso_alpha','iso_num'],但收到: 红色

那么这是怎么回事?

解决方法

首先,如果需要解释gopx之间的广泛差异,请查看herehere。而且,如果绝对不需要解释,您将在答案的最后找到完整的代码段,该代码段将在plotly.express

中显示带有颜色的多种功能。

第1部分:本质:

乍看起来似乎并非如此,但是有很多理由使color='red'不能像您期望的那样使用px来工作。但是首先,如果您想做的只是manually set a particular color for all markers,则感谢pythons chaining method,您可以使用.update_traces(marker=dict(color='red'))。但首先,让我们看看默认设置:

1.1表示默认值

图1,使用px.Scatter的px默认散点图

enter image description here

代码1,使用px.Scatter的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")

在这里,正如问题中已经提到的那样,该颜色被设置为通过px.colors.qualitative.Plotly可用的默认打印顺序中的第一种颜色:

['#636EFA',# the plotly blue you can see above
 '#EF553B','#00CC96','#AB63FA','#FFA15A','#19D3F3','#FF6692','#B6E880','#FF97FF','#FECB52']

那看起来还不错。但是,如果您想更改事物甚至同时添加更多信息怎么办?

1.2:如何覆盖默认设置并精确地使用px color做你想要的事情:

正如我们已经用px.scatter所涉及的那样,color属性没有像red这样的颜色作为参数。相反,例如,您可以使用color='continent'轻松区分数据集中的不同变量。但是px中的颜色还有很多:


以下六种方法的组合将使您可以

精确地 使用色绘表示的颜色。请记住,您甚至不必 选择 。您可以同时使用以下 one some all 中的所有方法。一种特别有用的方法将显示为13的组合。但是,我们稍后会谈到。这是您需要知道的:

1。 使用以下命令更改px使用的颜色顺序:

color_discrete_sequence=px.colors.qualitative.Alphabet

2。 color 参数

为不同的变量分配不同的颜色
color = 'continent'

3。 使用

自定义一种或多种可变颜色。
color_discrete_map={"Asia": 'red'}

4。 使用dict理解和color_discrete_map

轻松将较大的变量子集分组
subset = {"Asia","Africa","Oceania"}
group_color = {i: 'red' for i in subset}

5。 使用rgba()颜色代码设置不透明度。

color_discrete_map={"Asia": 'rgba(255,0.4)'}

6。 使用以下命令覆盖所有设置:

.update_traces(marker=dict(color='red'))

第2部分:细节和情节

下面的代码片段将产生下面的图,该图显示了所有大陆在不同GDP水平下的预期寿命。标记的大小代表不同层次的人群,使事情一开始就变得更加有趣。

图2:

enter image description here

代码2:

import plotly.express as px
import pandas as pd

# dataframe,input
df = px.data.gapminder()
df=df.query("year==2007")

px.scatter(df,y="lifeExp",color = 'continent',size='pop',)

为说明上述方法的灵活性,首先让我们 更改颜色顺序 。由于我们刚开始只显示 one 类别和 one 颜色,因此您必须等待后续步骤才能看到实际效果。但是现在这与步骤1中的color_discrete_sequence=px.colors.qualitative.Alphabet相同:

1。 通过

更改px使用的颜色顺序
color_discrete_sequence=px.colors.qualitative.Alphabet

enter image description here

现在,让我们将Alphabet颜色序列中的颜色应用于不同的大陆:

2。 color 参数

为不同的变量分配不同的颜色
color = 'continent'

enter image description here

如果您像我一样认为这种特殊的颜色顺序在眼中很容易但是可能无法区分,则可以将您选择的颜色分配给一个或多个大洲,如下所示:

3。 使用

自定义一种或多种可变颜色。
color_discrete_map={"Asia": 'red'}

enter image description here

这非常棒:现在,您可以更改顺序并选择任何颜色,以获得特别有趣的变量。但是,如果您想为更大的子集分配特定的颜色,上述方法可能会变得有些乏味。因此,您也可以使用dict comprehension来做到这一点:

4。。使用dict理解和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,color='continent',color_discrete_sequence=px.colors.qualitative.Alphabet,color_discrete_map=group_color
          )

enter image description here

5。。使用rgba()颜色代码设置不透明度。

现在让我们退后一步。如果您认为red适合亚洲,但有点太强了,则可以使用rgba之类的'rgba(255,0.4)'颜色来调整不透明度,以达到以下目的:

enter image description here

最后一个图的完整代码:

import plotly.express as px
import pandas as pd

# dataframe,color_discrete_map={"Asia": 'rgba(255,0.4)'}
          )

如果您认为我们现在有点太复杂了,可以再次覆盖所有此类设置:

6。。使用以下命令覆盖所有设置:

.update_traces(marker=dict(color='red'))

enter image description here

这使我们回到了起点。希望您会发现它有用!

完整的代码段以及所有可用选项:

# imports
import plotly.express as px
import pandas as pd

# dataframe
df = px.data.gapminder()
df=df.query("year==2007")

subset = {"Asia",#color_discrete_map=group_color
           color_discrete_map={"Asia": 'rgba(255,0.4)'}
          )#.update_traces(marker=dict(color='red'))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-