【发布时间】: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