问题描述
dict1 = {'Name':['Tom','nick','krish','jack','jill'],'Last':[20,21,19,18,15],'Change':[-1,-5,1,3,-5],'Color':['#30C030','#9acd32','#f08080','#FF1E3E','#FF1E3E']}
df = pd.DataFrame(dict1)
我希望标记颜色是“颜色”列中列出的每个项目的确切颜色,但是,当我使用以下内容时,它会根据该列中的值分配默认颜色,而不是分配实际颜色列出的颜色:
fig = px.scatter(df,x = 'Last',y = 'Change',template = 'plotly_dark',text = 'Name',color = 'Color'
)
fig.update_traces(textposition='bottom center')
fig
解决方法
import pandas as pd
import plotly.express as px
df = pd.DataFrame({'Name': ['tom','nick','krish','jack','jill'],'Last': [20,21,19,18,15],'Change': [-1,-5,1,3,-5],'Color': ['#30C030','#9acd32','#f08080','#FF1E3E','#FF1E3E']})
fig = px.scatter(df,x='Last',y='Change',template='plotly_dark',text='Name')
fig.update_traces(marker=dict(color=df['Color']),textposition='bottom center')
fig.show()
,
您也可以通过设置参数 color_discrete_sequence=df['Color']
来做到这一点。
您在那里定义要使用的离散颜色:
import pandas as pd
import plotly.express as px
dict1 = {'Name': ['Tom','#FF1E3E'],}
df = pd.DataFrame(dict1)
fig = px.scatter(
df,text='Name',color='Name',color_discrete_sequence=df['Color'],)
fig.update_traces(textposition='bottom center')
这个问题+答案包含相同的想法:
Plotly: How to assign specific colors for categories?
还有一个建议是使用参数 color_discrete_map
,您可以在其中专门将名称映射到颜色。