首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“`plotly`”中是否与`matplotlib.pyplot`中的“`pcolormesh`”(或“`pcolor`”)相当?

在“`plotly`”中是否与`matplotlib.pyplot`中的“`pcolormesh`”(或“`pcolor`”)相当?
EN

Stack Overflow用户
提问于 2022-01-11 16:03:42
回答 1查看 396关注 0票数 1

当我正在开发一个与dash交互的界面时,我使用plotly作为我的数字。然而,我对这个软件包的经验有限--我通常使用matplotlib来制作数字。

无论如何,我想用三维数据来创建一个图形,其中第三维度是用颜色表示的。对于matplotlib,我将使用pcolormesh (或pcolor)。不幸的是,我无法在plotly中找到一个等价的函数。我不能使用Contour或类似的,因为z-data应该遵循特定的(xy)-coordinates。

让我以一个例子加以澄清。为了方便起见,我们可以使用以下虚拟数据:

代码语言:javascript
复制
import numpy as np

x, y = np.meshgrid(np.linspace(0, 10), np.linspace(0, 10))
y += 2 * np.sin(x * 2 * np.pi / 10)
z = np.exp(-x / 10)

我想要的--并且能够使用matplotlib生成--结果来自以下代码(后面的结果):

代码语言:javascript
复制
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.pcolormesh(x, y, z)

然而,在plotly中,除了使用颜色编码的scatter-plot之外,我没有得到更多的信息:

代码语言:javascript
复制
fig = go.Figure()
fig.add_trace(
    go.Scatter(x=x, y=y, marker=dict(color=z))
)

以下内容如下所示:

然而,这并不是我的目标。扩大marker的大小以“欺骗”查看器是不够的,因为实际数据稍微复杂一些,(xy)-coordinates之间有不同的差距。

希望任何人都能帮我。非常感谢你的努力!

PS。我见过this post有一个类似的问题。但是,它的解决办法不适用于我。

EN

回答 1

Stack Overflow用户

发布于 2022-01-11 19:01:36

您可以增加x轴坐标的数目。

代码语言:javascript
复制
import numpy as np
import plotly.graph_objects as go

x, y = np.meshgrid(np.linspace(0, 10, 200), np.linspace(0, 10))
y += 2 * np.sin(x * 2 * np.pi / 10)
z = np.exp(-x / 10)

go.Figure(go.Scatter(x=x.flatten(), y=y.flatten(), mode="markers", marker_color=z.flatten()))

实验性

不完全工作,受Matplotlib: save plot to numpy array启发

代码语言:javascript
复制
import numpy as np
import plotly.express as px
import io
import matplotlib.pyplot as plt


x, y = np.meshgrid(np.linspace(0, 10), np.linspace(0, 10))
y += 2 * np.sin(x * 2 * np.pi / 10)
z = np.exp(-x / 10)

# plt.axes("off")
fig, ax = plt.subplots()
# ax.axes.visible = False
ax = ax.pcolormesh(x, y, z)
with io.BytesIO() as buff:
    fig.savefig(buff, format='raw', pad_inches=0, bbox_inches=0)
    buff.seek(0)
    data = np.frombuffer(buff.getvalue(), dtype=np.uint8)
w, h = fig.canvas.get_width_height()
im = data.reshape((int(h), int(w), -1))

px.imshow(im)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70669805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档