0

使用 Plotly imshow 函数时,我无法定义 x 和 y 绘图范围。

这是一些随机生成的数据和定义的绘图限制:

import numpy as np
img = np.random.randn(400,400)
xmin, xmax, ymin, ymax = 100, 200, 250, 350

使用 matplotlib,我可以执行以下操作来绘制数据并设置 x 和 y 绘图限制:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.imshow(img, cmap='gray')
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymax, ymin)

产生:

在此处输入图像描述

但是对于 Plotly,当我尝试用这段代码完成同样的事情时:

import plotly.express as px
fig = px.imshow(
    img,
    color_continuous_scale='gray',
)

fig.update_xaxes(range=[xmin, xmax])
fig.update_yaxes(range=[ymax, ymin])
fig.show()

只有 x 轴适当缩放。这就是我得到的: 在此处输入图像描述

如何使用 plotly 正确设置绘图的 x 和 y 限制?

编辑:我正在使用 Plotly 5.3.1 版

4

1 回答 1

1

你提到你需要一个色标,所以我尝试了各种方法并确认如果我禁用自动量程,将显示所需的色标和色条。

import numpy as np
img = np.random.randn(400,400)
xmin, xmax, ymin, ymax = 100, 200, 250, 350

import plotly.express as px
fig = px.imshow(
    img,
    color_continuous_scale='gray',
)

fig.update_xaxes(range=[xmin, xmax])
fig.update_yaxes(range=[ymin, ymax], autorange=False)

fig.show()

在此处输入图像描述

我没有知识来解释这一点,但是您可以添加以下参数以获得所需的方形图。这是来自官方参考的描述。

fig = px.imshow(img, binary_string=True)

将图像数据作为
plotly.py 4.10 中引入的二进制字符串传递

px.imshow 可以将数据作为数值列表或直接传递给浏览器的 png 二进制字符串传递给图形对象。虽然前一种解决方案提供了更大的灵活性(值可以是 float 或 int 类型,而对于图像字符串,值被重新缩放到 [0-255] 范围),但对于大型数组,使用二进制字符串通常更快。参数 binary_string 控制图像是作为 png 字符串(当 True 时)还是值列表(False)传递。对于多通道图像,其默认值为 True,对于单通道图像,其默认值为 False。当 binary_string=True 时,图像数据始终使用 go.Image 跟踪表示。

import plotly.express as px
fig = px.imshow(
    img,
    #color_continuous_scale='gray',
    binary_string=True
)

fig.update_xaxes(range=[xmin, xmax])
fig.update_yaxes(range=[ymax, ymin])
fig.show()

在此处输入图像描述

于 2021-09-18T03:30:59.157 回答