无输出:使用 Matplotlib 的条形图

Posted

技术标签:

【中文标题】无输出:使用 Matplotlib 的条形图【英文标题】:No Output: Bar Graph Using Matplotlib 【发布时间】:2021-10-31 09:59:34 【问题描述】:

我有一个 Airbnb 的 df,其中每一行代表一个 airbnb 列表。我正在尝试使用 Matplotlib 将两列绘制为条形图。

fig,ax= plt.subplots()
ax.bar(airbnb['neighbourhood_group'],airbnb['revenue'])
plt.show()

我认为,这张图应该在 x 轴上绘制每个社区,在 y 轴上绘制每个社区组的平均收入(默认情况下,条形图采用每个类别的平均值) 该行代码继续运行而没有给我任何错误,就好像它进入了无限期的while循环一样。 有人可以提出什么问题吗?

【问题讨论】:

似乎应该可以,但没有minimal reproducible example。试试airbnb.groupby('neighbourhood_group').revenue.agg(['mean']).plot(kind='bar', rot=0, legend=False, title='Mean Revenue per Neighbourhood') 请提供足够的代码,以便其他人更好地理解或重现问题。 我已经从kaggle.com/dgomonov/… 获取数据集另外我添加了一个额外的收入列,价格*number_of_reviews 对不起,这是我在 *** 上的第一个问题,不确定我是否提供了所需的数据集方式。 【参考方案1】:

以下我使用了dataframe,因为没有可用的。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# Create sample DataFrame
y = np.random.rand(10,2)
y[:,0]= np.arange(10)
df = pd.DataFrame(y, columns=["neighbourhood_group", "revenue"])

确保“np.random”在您启动程序时始终为收入列提供不同的值。

df:

# bar plot
ax = df.plot(x="neighbourhood_group", y="revenue", kind="bar")

关于您的代码在循环中运行的声明。莫非是要从DataFrame中处理数据量来显示条形图太费劲了。但是,要肯定地说,您必须向我们提供数据集。

【讨论】:

我不明白它是如何工作的。 y 数组的形状为 10,3,但在 pd 数据框中,我们提供了 2 个列名。如果我继续使用您的代码,我将遇到“ValueError:传递值的形状为 (10, 3),索引暗示 (10, 2)”。我们不必指定三个列名吗? 我编辑了我的解决方案并显示了DataFrame,那么它应该更容易理解 对不起,数组 Y 当然必须是 (10,2)。我实际上只和我一起改变了它,而不是在你的解决方案中。

以上是关于无输出:使用 Matplotlib 的条形图的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib 条形图:间隔条形图

Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图

如何使用 matplotlib 绘制条形范围图?

使用字典使用 matplotlib 绘制条形图

python 条形图使用matplotlib.pyplot.bar(已经给出了条形图)

Matplotlib 条形图:对角刻度标签