簡體   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