Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在matplotlib imshow等高线图顶部显示数据点?_Python 3.x_Matplotlib_Contour_Imshow - Fatal编程技术网

Python 3.x 如何在matplotlib imshow等高线图顶部显示数据点?

Python 3.x 如何在matplotlib imshow等高线图顶部显示数据点?,python-3.x,matplotlib,contour,imshow,Python 3.x,Matplotlib,Contour,Imshow,我用imshow制作了一个等高线图。从下面的代码可以看出,z的值是针对x和y值的范围进行计算的。作为下一步,我想在轮廓图像顶部绘制一些随机x\u new和y\u new的计算值,这些值可能由闭合圆或类似的标记 守则内容如下: import numpy as np import matplotlib.pyplot as plt from matplotlib import colors x = np.linspace(-0.5, 2.0, 101) y = np.linspace(-0.5, 2

我用
imshow
制作了一个等高线图。从下面的代码可以看出,
z
的值是针对
x
y
值的范围进行计算的。作为下一步,我想在轮廓图像顶部绘制一些随机
x\u new
y\u new
的计算值,这些值可能由闭合圆或类似的标记

守则内容如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors

x = np.linspace(-0.5, 2.0, 101)
y = np.linspace(-0.5, 2.0, 101)
z = np.zeros((101, 101))
E = 0.0
for i in range(len(x)):
    for j in range(len(y)):
        z[i,j] = -max(y[j]+0.2+E, 0.5-x[i], 0)
        
x_new = np.array([1.1168189, 0.8381589, 1.3312789, -0.2149011])
y_new = np.array([1.7571379, 1.5555579, 1.9138179, 0.7912879])
z_new = []
for k, l in zip(x_new, y_new):
    #print (k, l, -max(l+0.2+E, 0.5-k, 0)) # z_new = -max(l+0.2+eU, 0.5-k, 0) calculated for some random x_new and y_new
    z_new.append(-max(l+0.2+E, 0.5-k, 0)) # I would like to see these z_new points on the contour plot for corresponding x_new and y_new

fig, ax = plt.subplots()
ms = plt.imshow(z.T, cmap='plasma', vmin=-2.5, vmax=0, origin='lower', interpolation='none', extent=[-0.5,2.0,-0.5,2.0])
ax.set_xlabel('x', fontsize=16, fontname = "Helvetica")
ax.set_ylabel('y', fontsize=16, fontname = "Helvetica")
cbar = plt.colorbar(ms)
cbar.ax.tick_params(labelsize=10, direction='out')
cbar.set_label('z', fontsize=16, fontname = "Helvetica")
#plt.savefig('test.pdf')
plt.xticks(fontname = "Helvetica", fontsize=12)
plt.yticks(fontname = "Helvetica", fontsize=12)
plt.show()

您可以使用下面最后一行代码在热图顶部添加一个散点顶部。如果没有边,圆很难看到,但是当你发现它们时,你可以很好地感觉到它们的值与热图的比较。通过取消对
plt.scatter
命令上方的行的注释,可以将黑色边添加到圆中,这使得圆很容易定位,但颜色差异很难看到

将numpy导入为np
将matplotlib.pyplot作为plt导入
从matplotlib导入颜色
x=np.linspace(-0.5,2.0,101)
y=np.linspace(-0.5,2.0,101)
z=np.零((101,101))
E=0.0
对于范围内的i(len(x)):
对于范围内的j(len(y)):
z[i,j]=-max(y[j]+0.2+E,0.5-x[i],0)
x_new=np.array([1.1168189,0.8381589,1.3312789,-0.2149011])
y_new=np.数组([1.7571379,1.5555579,1.9138179,0.7912879])
z_new=[]
对于拉链中的k,l(x_新,y_新):
#print(k,l,-max(l+0.2+E,0.5-k,0))#z_new=-max(l+0.2+eU,0.5-k,0)为一些随机的x_new和y_new计算
z_new.append(-max(l+0.2+E,0.5-k,0))#我想在等高线图上看到对应的x_new和y_new的这些z_新点
图,ax=plt.子批次()
ms=plt.imshow(z.T,cmap='plasma',vmin=-2.5,vmax=0,原点='lower',插值='none',范围=[-0.5,2.0,-0.5,2.0])
ax.setxlabel('x',fontsize=16,fontname=“Helvetica”)
ax.set_ylabel('y',fontsize=16,fontname=“Helvetica”)
cbar=plt.色条(毫秒)
cbar.ax.tick_参数(labelsize=10,direction='out')
cbar.set_标签('z',fontsize=16,fontname=“Helvetica”)
#plt.savefig('test.pdf')
plt.xticks(fontname=“Helvetica”,fontsize=12)
plt.yticks(fontname=“Helvetica”,fontsize=12)
##新代码##
#plt.scatter(x_new,y_new,c=z_new,cmap='plasma',vmin=-2.5,vmax=0,edgecolors='black')#如果您想将点圈成黑色,请取消注释
plt.scatter(x_new,y_new,c='green')#如果需要绿色圆圈,请取消注释
#plt.散射(x_new,y_new,c=z_new,cmap='plasma',vmin=-2.5,vmax=0)
##新代码结束##
plt.show()

非常感谢,这正是我想要的。我可以问几个简短的问题吗?我想看看那些填充颜色的新点怎么样?我知道他们遵循地图的颜色,这使得他们很难区分。所以,让我们忘记新点的颜色编码,请让我知道如何用任何其他颜色(比如黄色)填充这些圆圈?第二个问题是如何将颜色条刻度的字体样式从默认更改为Helvetica?我可以更改热图的字体,但无法更改颜色栏的字体。谢谢不客气。圆点:请参见代码末尾的更新。勾选字体:我不能在这里输入代码,但如果您创建一个新问题,我会回答。很简单。