如何使用熊猫数据框中的列标记气泡图/散点图?

Posted

技术标签:

【中文标题】如何使用熊猫数据框中的列标记气泡图/散点图?【英文标题】:How to label bubble chart/scatter plot with column from pandas dataframe? 【发布时间】:2017-05-19 18:24:48 【问题描述】:

我正在尝试标记我从 matplotlib 创建的散点图/气泡图,其中包含来自 pandas 数据框中的列的条目。我看过很多相关的例子和问题(参见例如here 和here)。因此,我试图相应地注释情节。这是我的工作:

import matplotlib.pyplot as plt
import pandas as pd 
#example data frame
x = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
y = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
s = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
users =['mark', 'mark', 'mark', 'rachel', 'rachel', 'rachel', 'jeff', 'jeff', 'jeff', 'lauren', 'lauren', 'lauren']

df = pd.DataFrame(dict(x=x, y=y, users=users)

#my attempt to plot things
plt.scatter(x_axis, y_axis, s=area, alpha=0.5)
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.annotate(df.users, xy=(x,y))
    plt.show()

我使用了 pandas 数据帧,但不知何故得到了 KeyError- 所以我猜应该是 dict() 对象?有没有其他方法可以使用 pandas 数据框中的条目来标记数据?

【问题讨论】:

【参考方案1】:

您可以使用DataFrame.plot.scatter,然后通过DataFrame.iat循环选择:

ax = df.plot.scatter(x='x', y='y', alpha=0.5)
for i, txt in enumerate(df.users):
    ax.annotate(txt, (df.x.iat[i],df.y.iat[i]))
plt.show()

【讨论】:

谢谢!这很棒!有没有办法将其转换为气泡图?我试过ax = df.plot.scatter(x='x', y='y', s='s', alpha=0.5),但我得到了TypeError。有什么想法吗? 您只需要 ax = df.plot.scatter(x='x', y='y', s=s, alpha=0.5) - 将 s='s' 更改为 s=s - 输入是列表,而不是列 谢谢!这为我节省了很多时间! 感谢您的接受。顺便说一句,如果使用列 s - df = pd.DataFrame(dict(x=x, y=y, users=users, s=s)) 然后对我有用 ax = df.plot.scatter(x='x', y='y', s=df.s, alpha=0.5) 是的,我自己试过了。如果所有条目都是非 NaN,则效果很好。我在原始数据集中有很多缺失。因此,使用列表可以顺利进行。谢谢!【参考方案2】:

Jezreal 的回答很好,但我会发布这个只是为了说明我在另一个帖子中对 df.iterrows 的意思。

如果您想要动态大小,恐怕您也必须将 scatter(或 plot)命令放入循环中。

df = pd.DataFrame(dict(x=x, y=y, s=s, users=users))

fig, ax = plt.subplots(facecolor='w')

for key, row in df.iterrows():
    ax.scatter(row['x'], row['y'], s=row['s']*5, alpha=.5)
    ax.annotate(row['users'], xy=(row['x'], row['y']))

【讨论】:

谢谢,这也是一个很好的答案!另外:它可以方便地通过fig, ax = plt.subplots(facecolor='w') 来调整情节的外观!

以上是关于如何使用熊猫数据框中的列标记气泡图/散点图?的主要内容,如果未能解决你的问题,请参考以下文章

echart 散点图 怎么确认每个像素点有多少数据点集合?

使用核心图的气泡图、散点图、烛台图

tableau可视化数据分析60讲(十五)-tableau常用可视化视图(散点图&气泡图)

如何在使用 r 中的符号()命令更新散点图后添加图例

R语言使用symbols函数创建气泡图(bubble plot)使用2D散点图通过添加形状大小来实现3D散点图的效果

如何根据交叉点的大小在 Plotly 中构建具有气泡大小的气泡图?