matplotlib 如何创建叠加气泡图

zlwx9yxi  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(135)

我正在尝试用python创建一个气泡图。我的数据集看起来像这样。

Year   (Total students)  (Number Passed)
-----------------------------------------
2011       (500)              (250)
2012       (350)              (150)
2013       (348)              (100)

字符串
基本上,我想做的是创建一个气泡图来计算每年通过的学生人数和学生总数。值将是气泡图的大小。我如何使用python或matlab实现这一点?

编辑:

实际的数据集有17行和3列。
我按照建议使用了代码,这就是我得到的。

我做错什么了吗?

xxe27gdn

xxe27gdn1#

假设你的数据在DataFrame中,你可以做如下事情:

from matplotlib import pyplot as plt
s = len(df.index)
plt.scatter(df["Year"], np.ones(s), s=df["Total Students"]*20, alpha=0.6)
plt.scatter(df["Year"], np.ones(s), s=df["Number Passed"]*20, alpha=0.4)

plt.yticks([])
plt.xticks(df["Year"])

plt.show()

字符串
给予:


的数据
但我不确定这是否是您的数据的最佳可视化,或者,实际上,您的问题要求什么。

oknwwptz

oknwwptz2#

d = """Year   Total      Passed
2011       9e6              4e6
2012       10e6              3e6
2013       11e6              2e6"""
df = pd.read_csv(StringIO(d), sep='\\s+', header=0)

scale = 1e-3
fig, ax = plt.subplots()
ax.scatter(df['Year'], [0]*len(df['Year']), s=scale*df['Total'], label='Total')
ax.scatter(df['Year'], [0]*len(df['Year']), s=scale*df['Passed'], label='Passed')
ax.set_xticks(df['Year'])
ax.set_xticklabels(df['Year'])
ax.margins(x=0.25)

字符串


的数据

相关问题