繁体   English   中英

如何在 matplotlib 中的 pcolor 图像上绘制 numpy 数组?

[英]How to plot a numpy array over a pcolor image in matplotlib?

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

类似的东西: 在此处输入图片说明

我设法为矩阵图像编写代码,但我无法制作黑线(在这里我只在 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 轴上的值不匹配。 有人会帮我吗?

我试过这个,但这取决于你对黑线“轨道”的数据类型。 我认为你可以为顶点创建一个不同的 (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]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM