如何在Plotly的2D散点图中使用十六进制码修改标记颜色?
解决Plotly散点图用自定义十六进制码设置标记颜色的问题
你当前用px.scatter的color='Hexcode'没达到预期,是因为Plotly Express的color参数默认会把列数据当成分类/数值变量匹配内置调色板,不会直接用十六进制码作为点的颜色。下面给两种可行的解决方法:
方法一:基于Plotly Express修改已有图表
先创建基础散点图,再逐个设置每个点的标记颜色:
import plotly.express as px # 先生成基础图表,不指定color参数 hydrogen = px.scatter(plot_data, x='Calorific Value (kcal/kg)', y='Hydrogen (%)', title='Hydrogen Plot', width=800, height=800, hover_name='Lab') # 遍历数据,给每个点分配对应的十六进制颜色 for idx, hex_code in enumerate(plot_data['Hexcode']): hydrogen.data[0].marker.color[idx] = hex_code hydrogen.show()
方法二:用Plotly Graph Objects直接构建图表
这种方式更直接,直接把十六进制颜色列表传给marker的color参数:
import plotly.graph_objects as go fig = go.Figure() fig.add_trace(go.Scatter( x=plot_data['Calorific Value (kcal/kg)'], y=plot_data['Hydrogen (%)'], mode='markers', marker=dict(color=plot_data['Hexcode']), # 直接传入所有十六进制颜色 hovertext=plot_data['Lab'], hoverinfo='text' )) # 设置布局 fig.update_layout( title='Hydrogen Plot', width=800, height=800, xaxis_title='Calorific Value (kcal/kg)', yaxis_title='Hydrogen (%)' ) fig.show()
两种方法都能实现每个散点标记颜色与对应行的十六进制码完全一致的效果。
内容的提问来源于stack exchange,提问作者random235
相关产品推荐
相关产品推荐

