【问题标题】:How to plot a single value on contour plot?如何在等高线图上绘制单个值?
【发布时间】:2020-11-15 20:55:40
【问题描述】:

我正在做一个项目,其中我有来自传感器读数的 x_mean、y_mean、z_mean。我的任务是使用平均值作为绘图的 z 轴。在等高线图中,我需要该图的 z 轴值来表示 X 和 Y 坐标处的平均值。所以基本上我会有3个不同的情节。

我只有 x_mean、y_mean、z_mean。那么如何为每个人制作等高线图呢?

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(6,5))
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax = fig.add_axes([left, bottom, width, height]) 

start, stop = 0, 5

x_vals = np.linspace(start, stop)
y_vals = np.linspace(start, stop)
X, Y = np.meshgrid(x_vals, y_vals)
print(X)
print(X.shape)
x_mean = -19.44287213
Z = x_mean
print(Z)
print(Z.shape)

cp = plt.contourf(X, Y, Z, 80)
plt.colorbar(cp)

ax.set_title('Contour Plot')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()

【问题讨论】:

  • Z 必须是一个与 X 和 Y 形状相同的 numpy 数组。所以,你可以试试Z=np.full_like(X, x_mean)。不过,只有一个值的等高线图看起来很无聊且信息量不足。使用plt.contourf(X, Y, Z, levels=np.linspace(-100, 0, 80)) 避免颜色条只有一个值。
  • @JohanC 我的水晶球告诉我他们有不同的imshow 或其他什么,他们想叠加一条代表平均值的水平曲线。
  • @gboffi 因此,x_mean 将是某个区域内 z 值的平均值,而我们缺少允许定位曲线的 z 值......所以,也许plt.contour(X, Y, Z, levels=[x_mean], color='black') 使用真正的 Z 值可能会带来一些有用的东西。
  • 不,我的想法与您的情况完全不同,不,要绘制等高线图,您需要在表面上定义数据,而您没有这样的表面,至少判断从你的问题的文本。
  • @harryr z_mean 只是一个固定值吗?还是对应每对 x 和 y 的二维数组?请提供一些(玩具)示例数据。如果z_mean 只是一个单一的值,则无法获得有意义的轮廓。

标签: python numpy matplotlib plot contour


【解决方案1】:

有没有办法在单个值上绘制等高线图?

TL;博士

没有。


要制作等高线图,您需要一个由 不同 值组成的网格,如果您将网格中的所有值设置为单个常量值,算法会尝试构建数据中的曲线变得完全混乱

In [19]: x = np.linspace(0,5)
    ...: X,Y = np.meshgrid(x,x) 
    ...: Z = np.ones(X.shape) # a constant matrix
    ...: c = plt.contour(X,Y,Z, levels=[Z.mean()])                                                                                    
/home/boffi/lib/miniconda3/bin/ipython:4: UserWarning: No contour levels were found within the data range.
  import re

当我说“完全困惑”时,我是认真的,正如您从 REPL 的回答中看到的那样 定期警告和神秘的行 import re ...


编辑

查看您的最后一次编辑,您有 3 个时间序列,您应该简单地绘制它们,

plt.plot(t, x_mean, y_mean, z_mean)

或者,如果您对某种相关性感兴趣,可以使用散点图或 3D 散点图。

【讨论】:

  • @harryr 我看了一下,没看懂
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2011-04-27
  • 2012-10-28
相关资源
最近更新 更多