尝试使用matplotlib为我的柱状图添加y值。

20 浏览
0 Comments

尝试使用matplotlib为我的柱状图添加y值。

我有一个类似这样的数据框:

                平台         数量
发布年份        
         1996    PlayStation   138
         1997    PlayStation   170
         1998    PlayStation   155
         1999    PC            243...

现在我想要绘制水平柱状图,每个柱内都包含相应的平台名称,使其看起来类似于这样:

enter image description here

我该如何做到这一点?

0
0 Comments

在这个问题中,目标是在使用matplotlib绘制的条形图中添加y值。然而,在给定的代码中,并没有明确的步骤来添加y值。

要解决这个问题,可以通过在循环中使用plt.text()函数来手动添加y值。在给定的代码中,已经使用了plt.text()来添加x值(即平台名称)和百分比值。所以,我们只需要在循环的每次迭代中添加一个额外的plt.text()函数来添加y值。

下面是修改后的代码,可以实现在条形图上添加y值:

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv", index_col=0)
df.plot(kind="barh", legend=False, width=0.8)
for i, (p, pr) in enumerate(zip(df.index, df["Percent"])):
    plt.text(s=p, x=1, y=i, color="w", verticalalignment="center", size=18)
    plt.text(s=str(pr)+"%", x=pr-5, y=i, color="w",
             verticalalignment="center", horizontalalignment="left", size=18)
    plt.text(s=str(i+1), x=-2, y=i, color="w",
             verticalalignment="center", horizontalalignment="right", size=18)
plt.axis("off")
plt.xticks([])
plt.yticks([])
plt.tight_layout()
plt.savefig("data.png")

在修改后的代码中,我们添加了一个新的plt.text()函数来添加y值。这个函数在循环的每次迭代中被调用,通过将i值加1作为y值来实现。

运行修改后的代码后,将会生成一个包含y值的条形图。

0