Jaf*_*son 2 python matplotlib python-3.x
这是我尝试过的代码:
import matplotlib.pyplot as plt
import numpy as np
bb = [1,2,3,4,5,6,7,8,9,10]
cc = ["red","red","yellow","red","green","red","red","green","red","red"]
tt = ["\u2714","\u2714""\u2718","\u2714","\u2718","\u2714","\u2714","\u2718","\u2714","\u2714"]
x1=np.arange(10)
x2=np.arange(10)
fig = plt.figure()
fig.set_size_inches(50,70)
ax1 = fig.add_subplot(331)
ax1.bar(np.arange(len(bb)), bb, color=cc,width=0.6)
text_applied = ax1.text(x1,2,tt,color=cc)
plt.show()
Run Code Online (Sandbox Code Playgroud)
之前它提供的酒吧没有任何问题。但不适用于文本。我收到以下错误:
Traceback (most recent call last):
File "C:\Python35\lib\tkinter\__init__.py", line 1549, in __call__
return self.func(*args)
File "C:\Python35\lib\tkinter\__init__.py", line 596, in callit
func(*args)
File "C:\Python35\lib\site-packages\matplotlib\backends\_backend_tk.py", line 310, in idle_draw
self.draw()
File "C:\Python35\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 12, in draw
super(FigureCanvasTkAgg, self).draw()
File "C:\Python35\lib\site-packages\matplotlib\backends\backend_agg.py", line 433, in draw
self.figure.draw(self.renderer)
File "C:\Python35\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:\Python35\lib\site-packages\matplotlib\figure.py", line 1475, in draw
renderer, self, artists, self.suppressComposite)
File "C:\Python35\lib\site-packages\matplotlib\image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python35\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:\Python35\lib\site-packages\matplotlib\axes\_base.py", line 2607, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "C:\Python35\lib\site-packages\matplotlib\image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "C:\Python35\lib\site-packages\matplotlib\artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "C:\Python35\lib\site-packages\matplotlib\text.py", line 706, in draw
bbox, info, descent = textobj._get_layout(renderer)
File "C:\Python35\lib\site-packages\matplotlib\text.py", line 282, in _get_layout
key = self.get_prop_tup(renderer=renderer)
File "C:\Python35\lib\site-packages\matplotlib\text.py", line 862, in get_prop_tup
x, y = self.get_unitless_position()
File "C:\Python35\lib\site-packages\matplotlib\text.py", line 844, in get_unitless_position
x = float(self.convert_xunits(self._x))
TypeError: only size-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)
请让我知道我可以做什么来根据颜色和x values指定显示文本。
我不太明白你的问题。在文档中,plt.text()我找不到任何有关将字符串数组输入参数的可能性的信息:
定义:text(x, y, s, fontdict=None, withdash=False, **kwargs)
类型 : matplotlib.pyplot 模块的函数
将文本添加到轴。
将文本 s 添加到数据坐标中位置 x、y 处的轴。
参数
x, y :
标量放置文本的位置。默认情况下,这是在数据坐标中。可以使用变换参数更改坐标系。
s : str 文本。
所以我简单推荐一下
for x, t, c in zip(x1, tt, cc):
ax1.text(x, 2, t, color=c)
Run Code Online (Sandbox Code Playgroud)
我不确定您的预期输出到底是什么,但如果您想在每个条形下方使用不同颜色的符号,您可以将它们设置为这样的刻度:
import matplotlib.pyplot as plt
import numpy as np
bb = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
cc = ["red", "red", "yellow", "red", "green", "red", "red", "green", "red", "red"]
tt = ["\u2714", "\u2714", "\u2718", "\u2714", "\u2718", "\u2714", "\u2714", "\u2718", "\u2714", "\u2714"]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(range(len(bb)), bb, color=cc, width=0.6)
ax1.set_xticks(range(len(bb)))
ax1.set_xticklabels(tt)
for xtick, color in zip(ax1.get_xticklabels(), cc):
xtick.set_color(color)
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出:
顺便说一句,请注意,在您的代码中,tt第二个和第三个元素之间缺少逗号。
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |