能否使用Plotly绘制CIE标准色度图?
在Plotly中实现CIE1931色度图
实现思路
绕过依赖matplotlib的color.plotting.plot_chromaticity_diagram_CIE1931,直接基于CIE1931标准的色度坐标数据,用Plotly的散点图+填充路径功能复刻该图表,适配Dash+Plotly技术栈。
具体步骤
获取CIE1931边界坐标
从公开的CIE标准数据集或color库源码中提取色度图边界的(x,y)坐标(完整坐标可参考CIE官方文档或color库的实现逻辑)。Plotly绘制填充色域
使用plotly.graph_objects创建图表,通过Scatter组件绘制边界并填充区域,配置坐标轴和样式。
示例代码
import plotly.graph_objects as go import numpy as np # CIE1931色度图完整边界坐标(可从CIE官方或color库源码获取完整数据) cie_1931_boundary = np.array([ [0.1738, 0.0049], [0.1756, 0.0056], [0.1772, 0.0063], [0.1788, 0.0071], [0.1803, 0.0079], [0.1817, 0.0087], [0.1831, 0.0096], [0.1844, 0.0105], [0.1857, 0.0114], [0.1869, 0.0123], [0.1881, 0.0132], [0.1893, 0.0141], # 省略中间大量坐标,完整数据需补充 [0.1664, 0.0039], [0.1689, 0.0043], [0.1716, 0.0047] ]) # 创建Figure实例 fig = go.Figure() # 添加色域填充区域 fig.add_trace(go.Scatter( x=cie_1931_boundary[:, 0], y=cie_1931_boundary[:, 1], fill='toself', fillcolor='rgba(255, 230, 100, 0.4)', line=dict(color='black', width=1), name='CIE1931可显色域' )) # 配置图表样式 fig.update_layout( title='CIE1931色度图', xaxis_title='x 色度坐标', yaxis_title='y 色度坐标', xaxis=dict(range=[0, 0.8]), yaxis=dict(range=[0, 0.9]), showlegend=False, template='plotly_white' ) # Dash应用中直接传入dcc.Graph组件 # from dash import Dash, dcc, html # app = Dash(__name__) # app.layout = html.Div([dcc.Graph(figure=fig)]) # app.run_server(debug=True) fig.show()
优化扩展
- 渐变填充:可通过色空间转换(CIE xyY → RGB),为色域区域添加对应颜色的渐变填充,提升图表准确性。
- 数据完整性:若需要高精度图表,需补充完整的CIE1931边界坐标,可直接从
color库的plot_chromaticity_diagram_CIE1931方法源码中提取。
内容的提问来源于stack exchange,提问作者Олег Алексеев
相关产品推荐
相关产品推荐

