Python matplotlib文本(和figtext)错误
我试图为MDS解决方案绘制文本值而不是符号,matplotlib.pyplot给了我一些我不理解的错误。我已经更新了ipython和matplotlib,以确保它不是一个旧问题或旧版本的问题,而且我还无法通过谷歌在这里或其他地方找到任何类似问题的答案或报告 例如,在调用ipython-pylab之后,如果我键入:Python matplotlib文本(和figtext)错误,python,matplotlib,ipython,Python,Matplotlib,Ipython,我试图为MDS解决方案绘制文本值而不是符号,matplotlib.pyplot给了我一些我不理解的错误。我已经更新了ipython和matplotlib,以确保它不是一个旧问题或旧版本的问题,而且我还无法通过谷歌在这里或其他地方找到任何类似问题的答案或报告 例如,在调用ipython-pylab之后,如果我键入: x = random.rand(4) y = random.rand(4) s = [str(i) for i in arange(4)+1] text(x,y,s) 我得到这个错
x = random.rand(4)
y = random.rand(4)
s = [str(i) for i in arange(4)+1]
text(x,y,s)
我得到这个错误:
Traceback (most recent call last):
File "//anaconda/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in
draw_wrapper draw(artist, renderer, *args, **kwargs)
File "//anaconda/lib/python2.7/site-packages/matplotlib/figure.py", line 1034, in draw
func(*args)
File "//anaconda/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in
draw_wrapper draw(artist, renderer, *args, **kwargs)
File "//anaconda/lib/python2.7/site-packages/matplotlib/axes.py", line 2086, in draw
a.draw(renderer)
File "//anaconda/lib/python2.7/site-packages/matplotlib/artist.py", line 55, in
draw_wrapper draw(artist, renderer, *args, **kwargs)
File "//anaconda/lib/python2.7/site-packages/matplotlib/text.py", line 547, in draw
bbox, info, descent = self._get_layout(renderer)
File "//anaconda/lib/python2.7/site-packages/matplotlib/text.py", line 287, in
_get_layout key = self.get_prop_tup()
File "//anaconda/lib/python2.7/site-packages/matplotlib/text.py", line 696, in
get_prop_tup x, y = self.get_position()
File "//anaconda/lib/python2.7/site-packages/matplotlib/text.py", line 684, in
get_position x = float(self.convert_xunits(self._x))
TypeError: only length-1 arrays can be converted to Python scalars
如果我尝试使用标量而不是向量/列表调用文本,例如textx[0]、y[0]、s[0]或文本函数的任何变量,我会遇到相同的错误。同样的事情也会发生:
使用figtext,
如果我手动将matplotlib.pyplot导入为plt并调用plt.text,以及
如果我显式地创建figure和subplot对象和/或首先调用scatterx、y。
此外,值得一提的是,一旦出现此问题,如果我手动调整图形大小,错误消息将再次出现。可能相关的是,图形的更改不会自动更新,但只有在我绘制另一个子地块或手动调整图形大小后才会更新。但我跑题了
我在Mavericks的Mac上安装了更新的Anaconda,如上所述,我使用的是iPython。plt.text需要单个x、y和字符串值,而不是序列。见:
只需使用一个循环
例如:
import numpy as np
import matplotlib.pyplot as plt
x, y = np.random.rand(2,4)
s = [str(i) for i in np.arange(1, 5)]
fig, ax = plt.subplots()
text = [ax.text(*item) for item in zip(x, y, s)]
plt.show()
plt.text需要单个x、y和字符串值,而不是序列。见:
只需使用一个循环
例如:
import numpy as np
import matplotlib.pyplot as plt
x, y = np.random.rand(2,4)
s = [str(i) for i in np.arange(1, 5)]
fig, ax = plt.subplots()
text = [ax.text(*item) for item in zip(x, y, s)]
plt.show()