我有一个数据框列,我在其中应用了value_counts
来查找每个实体的出现次数。
我正在尝试将其绘制为条形图。 它在x轴上绘制每个实体,在y轴上绘制它们的计数。如何添加图例,以便将x轴上的每个实体都映射到字符串。
value_counts
的结果如下:
df.Column.value_counts()
10.0 1094
2154.0 697
23.0 202
我需要一个图例,它将用字符串替换我的实体。
实体的数量可能会有所不同。我有每个实体的字符串列表。所以我想用列表中的字符串替换我的实体。我只想在图例上替换它。
图形应在x轴上具有实体,图例应具有列表中的等效字符串。
答案 0 :(得分:1)
不太容易,因为默认情况下没有图例:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
s = df.Column.value_counts()
#sample data
#s = pd.Series([1094,697,202], index=[10.0,2154.0,23.0])
s.plot.bar()
a = mpatches.Patch(color='blue', label='Alpha')
b = mpatches.Patch(color='orange', label='Beta')
c = mpatches.Patch(color='green', label='Gamma')
plt.legend(handles=[a,b,c], loc='best')
plt.show()
如果wnt也更改了axis x
的值,请添加rename
:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
s = df.Column.value_counts()
d = {10:'Alpha', 2154: 'Beta', 23: 'Gamma'}
#sample data
#s = pd.Series([1094,697,202], index=[10.0,2154.0,23.0])
s.rename(d).plot.bar()
a = mpatches.Patch(color='blue', label='Alpha')
b = mpatches.Patch(color='orange', label='Beta')
c = mpatches.Patch(color='green', label='Gamma')
plt.legend(handles=[a,b,c], loc='best')
plt.show()
答案 1 :(得分:0)
equiv = {10:"Alpha", 2154:"Beta", 23:"Gamma"}
df = df.map(equiv)
或者可能必须使用.withColumn和类似How to add map column in spark based on other column?
的东西