Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 如何为matplotlib barplot中的所有条创建图例_Python_Python 3.x_Pandas_Matplotlib - Fatal编程技术网

Python 如何为matplotlib barplot中的所有条创建图例

Python 如何为matplotlib barplot中的所有条创建图例,python,python-3.x,pandas,matplotlib,Python,Python 3.x,Pandas,Matplotlib,我想为我的条形图中的所有条形图创建一个图例。我已经提取了所有条的标签,但不知怎么的,legend()z只为第一条条而不是第二条创建了一条线 我应该如何进行?我在想,我可能还需要手动提取条的颜色,但我不知道。我也希望有一个更简单的方法 df.Completeness.value_counts().plot(kind='bar') _, labels = plt.xticks() label_names = list(map(lambda p: p.get_text(), labels)) prin

我想为我的条形图中的所有条形图创建一个图例。我已经提取了所有条的标签,但不知怎么的,legend()z只为第一条条而不是第二条创建了一条线

我应该如何进行?我在想,我可能还需要手动提取条的颜色,但我不知道。我也希望有一个更简单的方法

df.Completeness.value_counts().plot(kind='bar')
_, labels = plt.xticks()
label_names = list(map(lambda p: p.get_text(), labels))
print(label_names)
plt.legend(label_names)

手动设置颜色并使用mpaches

import matplotlib.patches as mpatches
df.Completeness.value_counts().plot(kind='bar')
complete = mpatches.Patch(color='red', label='Complete')
partial = mpatches.Patch(color='blue', label='Partial')
plt.legend(handles=[complete, partial])

如果运行这个虚拟示例,您是否得到了所需的布局

import pandas as pd
import numpy as np

df=pd.DataFrame({'A':np.random.rand(2)-1,'B':np.random.rand(2)},index=['val1','val2'] )
ax = df.plot(kind='bar', color=['r','b']) 

这似乎不是一个传奇?当标签不足以说明数据显示的内容时,将使用图例。。。例如,在本图中,但在您的情况下,x轴上的记号是可以的。也许你想在绘图中添加文本:
plt.text(x,y,“text”,fontsize=int)
@Hielke Walinga你能分享样本数据吗?@min2bro它的tsv。你没有回答我的问题。你的话完全正确,但这不是我想要的。另外,
legend()
只选择第一个条的颜色也没有意义。我基本上需要一些方法来提取所有条的颜色,并手动将这些颜色传递给
legend()
函数。