当z值大于0.85时将z值显示为注释.Tripcolor Matplotlib [英] Showing z value as an annotation when z value is >0.85 Tripcolor Matplotlib

查看:187
本文介绍了当z值大于0.85时将z值显示为注释.Tripcolor Matplotlib的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类似于tripcolor演示示例的问题. 我有lon,lat,z值,我正在使用Tripcolor绘制,如果我的z值小于0.70,我想在特定的lon,lat位置显示注释为lon值,lat值和z值.

I have problem similar to tripcolor demo example. I have lon,lat , z values which i am plotting using Tripcolor i want to show annotation as lon value,lat value and z value at particular lon,lat location if my z value is less than 0.70.

例如,在下面的代码中,我希望在我的绘图中显示注释/弹出消息,该消息显示lon = -2 lat = 55处的lon值,lat值和z值,如果z值小于0.70,则显示注释zvalue大于0.70,然后在绘图中显示lon值lat值和zvalue.我希望绘图类似于提供的图像.谢谢.

For Example in below code , i want an annotation / popup message show in my plot which show lon value, lat value and z value at location lon=-2 lat=55 show annotation if z value is less than 0.70 i.e if zvalue is greater than 0.70 then in plot show me lon value lat value and zvalue.I want plot similar to the image provided. Thank you.

xy = np.asarray([
[-0.101, 0.872], [-0.080, 0.883], [-0.069, 0.888], [-0.054, 0.890],
[-0.045, 0.897], [-0.057, 0.895], [-0.073, 0.900], [-0.087, 0.898],
[-0.090, 0.904], [-0.069, 0.907], [-0.069, 0.921], [-0.080, 0.919],
[-0.073, 0.928], [-0.052, 0.930], [-0.048, 0.942], [-0.062, 0.949],
[-0.054, 0.958], [-0.069, 0.954], [-0.087, 0.952], [-0.087, 0.959],
[-0.080, 0.966], [-0.085, 0.973], [-0.087, 0.965], [-0.097, 0.965],
[-0.097, 0.975], [-0.092, 0.984], [-0.101, 0.980], [-0.108, 0.980],
[-0.104, 0.987], [-0.102, 0.993], [-0.115, 1.001], [-0.099, 0.996],
[-0.101, 1.007], [-0.090, 1.010], [-0.087, 1.021], [-0.069, 1.021],
[-0.052, 1.022], [-0.052, 1.017], [-0.069, 1.010], [-0.064, 1.005],
[-0.048, 1.005], [-0.031, 1.005], [-0.031, 0.996], [-0.040, 0.987],
[-0.045, 0.980], [-0.052, 0.975], [-0.040, 0.973], [-0.026, 0.968],
[-0.020, 0.954], [-0.006, 0.947], [ 0.003, 0.935], [ 0.006, 0.926],
[ 0.005, 0.921], [ 0.022, 0.923], [ 0.033, 0.912], [ 0.029, 0.905],
[ 0.017, 0.900], [ 0.012, 0.895], [ 0.027, 0.893], [ 0.019, 0.886],
[ 0.001, 0.883], [-0.012, 0.884], [-0.029, 0.883], [-0.038, 0.879],
[-0.057, 0.881], [-0.062, 0.876], [-0.078, 0.876], [-0.087, 0.872],
[-0.030, 0.907], [-0.007, 0.905], [-0.057, 0.916], [-0.025, 0.933],
[-0.077, 0.990], [-0.059, 0.993]])
x, y = np.rad2deg(xy).T

triangles = np.asarray([
[67, 66,  1], [65,  2, 66], [ 1, 66,  2], [64,  2, 65], [63,  3, 64],
[60, 59, 57], [ 2, 64,  3], [ 3, 63,  4], [ 0, 67,  1], [62,  4, 63],
[57, 59, 56], [59, 58, 56], [61, 60, 69], [57, 69, 60], [ 4, 62, 68],
[ 6,  5,  9], [61, 68, 62], [69, 68, 61], [ 9,  5, 70], [ 6,  8,  7],
[ 4, 70,  5], [ 8,  6,  9], [56, 69, 57], [69, 56, 52], [70, 10,  9],
[54, 53, 55], [56, 55, 53], [68, 70,  4], [52, 56, 53], [11, 10, 12],
[69, 71, 68], [68, 13, 70], [10, 70, 13], [51, 50, 52], [13, 68, 71],
[52, 71, 69], [12, 10, 13], [71, 52, 50], [71, 14, 13], [50, 49, 71],
[49, 48, 71], [14, 16, 15], [14, 71, 48], [17, 19, 18], [17, 20, 19],
[48, 16, 14], [48, 47, 16], [47, 46, 16], [16, 46, 45], [23, 22, 24],
[21, 24, 22], [17, 16, 45], [20, 17, 45], [21, 25, 24], [27, 26, 28],
[20, 72, 21], [25, 21, 72], [45, 72, 20], [25, 28, 26], [44, 73, 45],
[72, 45, 73], [28, 25, 29], [29, 25, 31], [43, 73, 44], [73, 43, 40],
[72, 73, 39], [72, 31, 25], [42, 40, 43], [31, 30, 29], [39, 73, 40],
[42, 41, 40], [72, 33, 31], [32, 31, 33], [39, 38, 72], [33, 72, 38],
[33, 38, 34], [37, 35, 38], [34, 38, 35], [35, 37, 36]])

 xmid = x[triangles].mean(axis=1)
 ymid = y[triangles].mean(axis=1)
 x0 = -5
 y0 = 52
zfaces = np.exp(-0.01 * ((xmid - x0) * (xmid - x0) +
                     (ymid - y0) * (ymid - y0)))
fig3, ax3 = plt.subplots()
ax3.set_aspect('equal')
tpc = ax3.tripcolor(x, y, triangles, facecolors=zfaces, edgecolors='k')
fig3.colorbar(tpc)
ax3.set_title('tripcolor of user-specified triangulation')
ax3.set_xlabel('Longitude (degrees)')
ax3.set_ylabel('Latitude (degrees)')
plt.show()

在此处输入图片描述 #最终图片链接

enter image description here #final image link

推荐答案

Voila,但在我看来,您正在尝试过多地进行注释.

Voila, but in my opinion, you are trying to annotate way too much.

添加以下代码段,将产生以下图像:

Adding the following snippet, yields the image below:

indices, = np.where(zfaces > 0.8)
for idx in indices:
    xx, yy, zz = xmid[idx], ymid[idx], zfaces[idx]
    ax3.annotate(f'x={xx:.2f}\ny={yy:.2f}\nz={zz:.2f}', (xx, yy),
                 horizontalalignment='center',
                 verticalalignment='center',
                 fontsize='xx-small',
                 color='black')

这是一个更好的选择:

indices, = np.where(zfaces > 0.8)
for idx in indices:
    xx, yy, zz = xmid[idx], ymid[idx], zfaces[idx]
    ax3.annotate(f'{zz:.2f}', (xx, yy),
                 horizontalalignment='center',
                 verticalalignment='center',
                 fontsize='xx-small',
                 color='white')

这篇关于当z值大于0.85时将z值显示为注释.Tripcolor Matplotlib的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆