pandas 中按类别分类的散点图
scatter plot by category in pandas
在过去的 30 分钟里,这一直困扰着我。我想做的是按类别散点图。我查看了文档,但无法在那里找到答案。我查看了 here,但是当我 运行 在 iPython Notebook 中查看时,我没有得到任何东西。
这是我的数据框:
time cpu wait category
8 1 0.5 a
9 2 0.2 a
2 3 0.1 b
10 4 0.7 c
3 5 0.2 c
5 6 0.8 b
理想情况下,我想要一个散点图,在 x 轴上显示 CPU,在 y 轴上等待,图表上的每个点都按类别区分。例如,如果 a=red、b=blue 和 c=green,则点 (1, 0.5) 和 (2, 0.2) 应该是红色,(3, 0.1) 和 (6, 0.8) 应该是蓝色,等等.
如何使用 pandas 执行此操作?还是matplotlib?以工作为准。
你可以
color_map = {'a': 'r', 'b': 'b', 'c': 'y'}
ax = plt.subplot()
x, y = df.cpu, df.wait
colors = df.category.map(color_map)
ax.scatter(x, y, color=colors)
这将为您提供类别 a 的红色、类别 b 的蓝色、类别 c 的黄色。
因此,您可以传递与数组长度相同的颜色别名列表。
您可以在此处查看无数可用颜色:http://matplotlib.org/api/colors_api.html。
我认为 plot 方法对散点图不是很有用。
我会根据类别用你的颜色创建一个列,然后执行以下操作,其中 ax 是 matplotlib ax,df 是你的数据框:
ax.scatter(df['cpu'], df['wait'], marker = '.', c = df['colors'], s = 100)
这与@JoeCondron 的答案基本相同,但有两个衬里:
cmap = {'a': 'red', 'b': 'blue', 'c': 'yellow'}
df.plot(x='cpu', y='wait', kind='scatter',
colors=[cmap.get(c, 'black') for c in df.category])
如果没有为类别映射颜色,则默认为黑色。
编辑:
以上适用于 Pandas 0.14.1。对于 0.16.2,'colors' 需要更改为 'c':
df.plot(x='cpu', y='wait', kind='scatter',
c=[cmap.get(c, 'black') for c in df.category])
在过去的 30 分钟里,这一直困扰着我。我想做的是按类别散点图。我查看了文档,但无法在那里找到答案。我查看了 here,但是当我 运行 在 iPython Notebook 中查看时,我没有得到任何东西。
这是我的数据框:
time cpu wait category
8 1 0.5 a
9 2 0.2 a
2 3 0.1 b
10 4 0.7 c
3 5 0.2 c
5 6 0.8 b
理想情况下,我想要一个散点图,在 x 轴上显示 CPU,在 y 轴上等待,图表上的每个点都按类别区分。例如,如果 a=red、b=blue 和 c=green,则点 (1, 0.5) 和 (2, 0.2) 应该是红色,(3, 0.1) 和 (6, 0.8) 应该是蓝色,等等.
如何使用 pandas 执行此操作?还是matplotlib?以工作为准。
你可以
color_map = {'a': 'r', 'b': 'b', 'c': 'y'}
ax = plt.subplot()
x, y = df.cpu, df.wait
colors = df.category.map(color_map)
ax.scatter(x, y, color=colors)
这将为您提供类别 a 的红色、类别 b 的蓝色、类别 c 的黄色。 因此,您可以传递与数组长度相同的颜色别名列表。 您可以在此处查看无数可用颜色:http://matplotlib.org/api/colors_api.html。 我认为 plot 方法对散点图不是很有用。
我会根据类别用你的颜色创建一个列,然后执行以下操作,其中 ax 是 matplotlib ax,df 是你的数据框:
ax.scatter(df['cpu'], df['wait'], marker = '.', c = df['colors'], s = 100)
这与@JoeCondron 的答案基本相同,但有两个衬里:
cmap = {'a': 'red', 'b': 'blue', 'c': 'yellow'}
df.plot(x='cpu', y='wait', kind='scatter',
colors=[cmap.get(c, 'black') for c in df.category])
如果没有为类别映射颜色,则默认为黑色。
编辑:
以上适用于 Pandas 0.14.1。对于 0.16.2,'colors' 需要更改为 'c':
df.plot(x='cpu', y='wait', kind='scatter',
c=[cmap.get(c, 'black') for c in df.category])