【问题标题】:How to plot a numpy array over a pcolor image in matplotlib?如何在 matplotlib 中的 pcolor 图像上绘制一个 numpy 数组?
【发布时间】:2023-03-11 15:11:01
【问题描述】:

我想在此图像中将矩阵绘制为图像,将向量绘制为一条线。

类似的东西:

我设法为矩阵图像编写代码,但我无法制作黑线(这里我只是 PowerPoint 中的示例)。

这是我目前的代码:

from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib.ticker import LogLocator
from matplotlib import rcParams
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import numpy as np

rcParams['font.size']=35
x = np.arange(1,16,1)
y = np.arange(-50,0,1)
z =  100 * np.random.random_sample((15, 50)) 
line = np.linspace(0,100,50)
fig, ax = plt.subplots(figsize=(25,25))
divider = make_axes_locatable(ax)
cax = divider.append_axes('right', size='5%', pad=0.1)

im = ax.pcolor(x,y,z.T,norm=LogNorm(0.1, 100),cmap= 'jet')
cbar = fig.colorbar(im,cax=cax, orientation='vertical')
cbar.ax.yaxis.set_major_locator(LogLocator())  # <- Why? See above.
cbar.ax.set_ylabel('Resistividade \u03C1 [ohm.m]', rotation=270)
#ax2=ax.twinx()
#ax2.plot(line,y,'k--',linewidth=10)
ax.set_xlabel('Aquisição')
ax.set_ylabel('Profundidade [m]')
plt.savefig('mrec_1'+'.png',bbox_inches = "tight", format='png', dpi=300)  
plt.show()

我尝试使用 ax.twinx() 但由于磁力的顺序不同,x 轴上的值不匹配。 有人能帮帮我吗?

【问题讨论】:

  • 如果你想在 pcolor 图上画一条线,你所要做的就是画一个 pcolor 图然后画线,你可以在同一个轴上做。当然,您的线需要 x 和 y 坐标。在您的示例中,该行从 0 变为 100,但 x 仅从 1 变为 15。因此存在不匹配。
  • @BlueScr33n 感谢您的回答,在我的代码中我想绘制(就像我在注释行 ax2.plot(line,y) 中一样)这条线,我的线有 50 个元素,就像 y从图片来看,问题是图片x轴的单位和直线完全不同,所以看不到直线。
  • 我不太明白你想做什么。是的,这条线的范围与图像不同。您想使用第二个 x 轴,但在同一个绘图上使用相同的 y 轴吗?
  • @BlueScr33n 是的,我想要第二个 x 轴,并且图像看起来像我发布的那个
  • 使用 twiny 而不是 twinx,而我们正在使用它。更清楚地将颜色条与绘图区分开来。看起来颜色条是情节的一部分,而不是分开的。

标签: python matplotlib plot colormap


【解决方案1】:

我试过了,但这取决于您对黑线“轨道”拥有的数据类型。我认为您可以为顶点制作一组不同的(x,y)坐标(其中线改变方向+原点和终点)。根据我在图像中看到的,您可以添加这两行(是近似值)

coordinates=np.array([[7,0],[7,-5],[9,-5],[9,-13], [7,-13],[7,-23],[13,-23],[13,-60]])
ax.plot(coordinates[:,0], coordinates[:,1], c='k', linewidth=10)

其中每个坐标元素都是 [x,y] 对。但是,如果您有来自测井的 x 和 y,例如,您可以将它们用作数组而不是坐标[:,0] 和坐标[:,1]

【讨论】:

  • 我确实有来自测井的坐标,这就是我想要绘制的反演结果(图像)。但是当我尝试这样做时,以简单的方式(如在我的代码中)测井的比例变成了一条直线,因为 imae 的 x 比例对测井不利
【解决方案2】:

正如@BlueScr33n 提到的,我使用了 twiny 并且工作正常。

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 1970-01-01
    • 2016-04-26
    • 2021-06-16
    • 2017-03-14
    • 1970-01-01
    • 2011-12-18
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多