或者更具体地说,如何将右上角的[659]改为' 659度'或类似的东西?
我已经检查了以下回复中提到的所有主题:matplotlib values under cursor。但是,所有这些似乎都解决了光标的x,y位置。我有兴趣改变数据值。我在api中找不到回复或相关文档。
我已经尝试了format_coord(x, y)
和format_cursor_data(data)
,但它们似乎都没有效果。
谢谢, Sarith
PS:我的代码在多个模块中,是gui应用程序的一部分。我可以分享相关部分,如果这有助于回答这个问题。
答案 0 :(得分:0)
通过修改matplotlib中的example,我得到了这段代码:
在z。
之后显示x,y和z值,度您应该可以轻松修改它,或复制相关功能以使其在您身边工作。
你说你已经试过format_coord
,也许你忘了设置功能? (倒数第二行)
"""
Show how to modify the coordinate formatter to report the image "z"
value of the nearest pixel given x and y
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
X = 10*np.random.rand(5, 3)
fig, ax = plt.subplots()
ax.imshow(X, cmap=cm.jet, interpolation='nearest')
numrows, numcols = X.shape
def format_coord(x, y):
col = int(x + 0.5)
row = int(y + 0.5)
if col >= 0 and col < numcols and row >= 0 and row < numrows:
#get z from your data, given x and y
z = X[row, col]
#this only leaves two decimal points for readability
[x,y,z]=map("{0:.2f}".format,[x,y,z])
#change return string of x,y and z to whatever you want
return 'x='+str(x)+', y='+str(y)+', z='+str(z)+" degrees"
else:
return 'x=%1.4f, y=%1.4f' % (x, y)
#Set the function as the one used for display
ax.format_coord = format_coord
plt.show()
答案 1 :(得分:0)
Emmmm,Sarith,我也遇到了问题,但有一点技巧可以帮助我。我仍然使用此功能:
your_imshow.format_coord = lambda x, y: 'x={:.5f}, y={:.2f}, amplitude='.format(x,y)
它假装在括号之前添加标签。是的,这是更改演示文稿形式的简单但非必要的方法,但对我有用。我希望这也可以使其他人受益。
答案 2 :(得分:0)
单行解决方案:
ax.format_coord = lambda x, y: 'x={:.2f}, y={:.2f}, z={:.2f}'.format(x,y,data[int(y + 0.5),int(x + 0.5)])
答案 3 :(得分:0)
我遇到了同样的问题(我想摆脱数据并将其发送到tkinter小部件中的其他位置)。
我发现没有ax.format_coord
被呼叫,您需要更改的是matplotlib.artist.Artist
的那个。
这对我有用:
def format_cursor_data(self,data):
return 'new_data'
matplotlib.artist.Artist.format_cursor_data=format_cursor_data