【发布时间】:2022-11-04 03:01:48
【问题描述】:
使用 Plotly,我想在同一页面上显示两个 imshow,在同一位置,不透明。
这几乎有效:
import plotly.express as px, numpy as np
from skimage import io
img = io.imread('https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Crab_Nebula.jpg/240px-Crab_Nebula.jpg')
fig = px.imshow(img)
x = np.random.random((100, 200))
fig2 = px.imshow(x)
fig.show()
fig2.show()
但它会在两个不同的选项卡中显示两个 imshow 图像。
如何在同一个图上显示两个“imshow”,两个图层都有一个不透明度滑块?
作为参考,这里是 matplotlib 等价物:
import numpy as np, matplotlib.pyplot as plt, matplotlib.widgets as mpwidgets, scipy.misc
x = scipy.misc.face(gray=False) # shape (768, 1024, 3)
y = np.random.random((100, 133)) # shape (100, 133)
fig, (ax0, ax1) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [5, 1]})
OPACITY = 0.5
img0 = ax0.imshow(x, cmap="jet")
img1 = ax0.imshow(y, cmap="jet", alpha=OPACITY, extent=img0.get_extent())
slider0 = mpwidgets.Slider(ax=ax1, label='opacity', valmin=0, valmax=1, valinit=OPACITY)
slider0.on_changed(lambda value: img1.set_alpha(value))
plt.show()
【问题讨论】:
-
我不确定我是否理解这些要求。比如说,滑块值是
v。您希望两张图像都具有不透明度v,或者一个具有不透明度v,另一个具有1-v?此外,在您的 sn-p 中,y将出现在x之上 - 对于v的所有值,它是否应该保持这种状态? -
@YuliaV
v对于一个和1-v对于另一个将是完美的(在我的情况下,我的做法略有不同 - 一个总是以不透明度显示1- 但在这里没关系)。 -
@YuliaV 在我的示例中
y位于顶部,但是当不透明度接近 0 时,它就会消失。任何允许用户从一个 imshow 顺利(不透明)转到另一个 imshow 的组合都是完美的。 -
您使用的是哪个 IDE?
标签: python numpy plotly plotly-python