matplotlib CIE标准色度图可以作图吗?

icomxhvb  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(138)

我想在plotly中显示这样一个图形,但我在文档中没有找到类似的内容。graph example
我发现只有color.plotting.plot_chromaticity_diagram_CIE1931在颜色库中,它做了我需要的,但与matplotlib。我的应用程序是使用破折号+ plotly所以不能使用matplotlib。

igsr9ssn

igsr9ssn1#

当然不是最优雅的,但你可以使用Colour通过Matplotlib将图像绘制到png字节流中,然后将其用作Plotly中的布局背景图像,然后你可以从colour.plotting.diagrams.plot_spectral_locus定义中挑选你需要的位来绘制光谱轨迹和波长。

import base64
import colour
import io
import matplotlib.pyplot as plt
import plotly.graph_objects as go

colour.plotting.colour_style()
# Resolution of the background image divided by 10, i.e. 1000px here.
plt.rcParams.update({"figure.figsize": (10.00, 10.00)})

# Drawing the background image with Matplotlib.
figure, axes = colour.plotting.diagrams.plot_chromaticity_diagram_colours(
    diagram_colours="RGB", axes_visible=False, standalone=False)
figure.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0) 

buffer = io.BytesIO()
plt.savefig(buffer, format="png")
data_png = "data:image/png;base64," + base64.b64encode(buffer.getbuffer()).decode("utf8")
plt.close()

# Displaying it with Plotly.
figure = go.Figure()
figure.update_layout(
    width=1000,
    height=1000,
    xaxis=dict(
        range=[0, 1]
    ),
    yaxis=dict(
        range=[0, 1]
    ),
)
figure.update_yaxes(
    scaleanchor="x",
    scaleratio=1,
  )
figure.add_layout_image(
    dict(
        source=data_png,
        xref="x",
        yref="y",
        x=0,
        y=1,
        sizex=1,
        sizey=1,
        sizing="stretch",
        layer="below"
    )
)
figure.show()

相关问题