Plotly Graph Objects实现基于z数组的标记点颜色差异化设置
问题:用Plotly Graph Objects实现基于z值的散点标记颜色区分
你遇到的报错是因为go.Scatter作为2D散点图组件,并不支持z参数。要实现根据z数组的值为散点标记分配不同颜色,需要通过marker的color属性绑定z值,并配合颜色映射配置来完成。
修改后的完整代码
import numpy as np import plotly.graph_objects as go def plot(x,y,z): fig = go.Figure() trace1 = go.Scatter( x=x, y=y, mode='markers', name='markers', # 核心修改:通过marker.color绑定z值,配置颜色映射 marker=dict( size=14, color=z, # 将z值绑定到标记颜色 colorscale='Viridis', # 指定颜色映射方案 colorbar=dict(title='Z值') # 添加颜色条说明 ) ) fig.add_traces([trace1]) tickvals = [0,np.pi/2,np.pi,np.pi*3/2,2*np.pi] ticktext = ["0","$\\frac{\\pi}{2}$","$\\pi$","$\\frac{3\\pi}{2}$","$2\\pi$"] layout = dict( title="demo", xaxis_title="X", yaxis_title="Y", title_x=0.5, margin=dict(l=10,t=20,r=10,b=40), height=300, xaxis=dict( side='bottom', linecolor='black', tickangle=0, tickvals = tickvals, ticktext=ticktext, ticks='outside', ticklen=7, tickwidth=1, tickcolor='black', tickson="labels", title=dict(standoff=5), showticklabels=True, ), yaxis=dict( showgrid=True, zeroline=True, zerolinewidth=.5, zerolinecolor='black', showline=True, linecolor='black', showticklabels=True, ) ) fig.update_layout(layout) # 若save_fig是自定义函数,可替换为Plotly内置的write_image # save_fig(fig,"/vagrant/work/demo.png") fig.write_image("/vagrant/work/demo.png") fig.show() return n = 20 x = np.linspace(0.0, 2*np.pi, n) y = np.sin(x) z = np.random.randint(0,100,size=n) plot(x,y,z)
关键修改说明
- 移除了报错的
z = z参数,改用marker.color=z将z数组的值与标记颜色绑定 - 通过
colorscale指定颜色映射方案,Plotly内置多种预设(如'Viridis'、'Plasma'等),也可以自定义颜色列表 - 添加
colorbar配置,显示z值与颜色的对应关系,提升图表可读性 - 若z是分类值(而非连续数值),可以将
colorscale替换为color_discrete_map来指定每个分类对应的颜色
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

