Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用pandas数据框中的列标记气泡图/散点图?_Python 3.x_Pandas_Matplotlib_Scatter Plot - Fatal编程技术网

Python 3.x 如何使用pandas数据框中的列标记气泡图/散点图?

Python 3.x 如何使用pandas数据框中的列标记气泡图/散点图?,python-3.x,pandas,matplotlib,scatter-plot,Python 3.x,Pandas,Matplotlib,Scatter Plot,我正在尝试为从matplotlib创建的散点图/气泡图添加标签,该散点图包含pandas数据框中某列的条目。我看到了大量相关的例子和问题(参见和)。因此,我试图对情节进行相应的注释。以下是我的工作: 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, 30

我正在尝试为从matplotlib创建的散点图/气泡图添加标签,该散点图包含pandas数据框中某列的条目。我看到了大量相关的例子和问题(参见和)。因此,我试图对情节进行相应的注释。以下是我的工作:

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()
我使用了一个框架,但不知何故得到了一个keyrerror,所以我猜应该是
dict()
对象?是否有其他方法可以使用pandas数据框中的条目标记数据

您可以使用,然后通过以下方式在循环中选择:


Jezreal的回答很好,但我将发布这篇文章,只是为了说明我在另一个线程中使用
df.iterrows
的意思

如果你想有一个动态的大小,恐怕你也必须在循环中加入散布(或绘图)命令

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']))

谢谢!这太棒了!有没有办法把它变成泡泡糖?我尝试了
ax=df.plot.scatter(x='x',y='y',s='s',alpha=0.5)
但是我得到了一个
类型错误。有什么想法吗?你只需要
ax=df.plot.scatter(x='x',y='y',s=s,alpha=0.5)
-将
s='s'
更改为
s=s
-输入是列表,不是列谢谢!这节省了我不少时间!谢谢你的接受。顺便说一句,如果使用column
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,则效果良好。我在原始数据集中缺少了很多。因此,使用列表可以顺利地工作。非常感谢。谢谢,这也是一个很好的答案!另外:它可以方便地通过
fig,ax=plt.subplot(facecolor='w')
修改绘图的外观!
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']))