Python散点图根据数值不同使用不同的颜色。

17
我有一个数据框,我想制作一个散点图。 数据框看起来像:

I have a dataframe which i want to make a scatter plot of.

the dataframe looks like:


我有一个数据框,我想制作一个散点图。

数据框看起来像:

       year  length  Animation
0      1971     121       1
1      1939      71       1
2      1941       7       0
3      1996      70       1
4      1975      71       0

我希望在我的散点图中,根据“动画”一列的值来设置不同颜色的点。
当动画 = 1 时,颜色为黄色
当动画 = 0 时,颜色为黑色
或者类似的设置

我尝试了以下方法:

dfScat = df[['year','length', 'Animation']]
dfScat = dfScat.loc[dfScat.length < 200]    
axScat = dfScat.plot(kind='scatter', x=0, y=1, alpha=1/15, c=2)

这导致了一个滑块,使得难以区分差异。在此输入图片描述

2个回答

18
您还可以通过将数组传递给c=来为点分配离散颜色。像这样:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

d = {"year"      : (1971, 1939, 1941, 1996, 1975),
     "length"    : ( 121,   71,    7,   70,   71),
     "Animation" : (   1,    1,    0,    1,    0)}

df = pd.DataFrame(d)
print(df)

colors = np.where(df["Animation"]==1,'y','k')
df.plot.scatter(x="year",y="length",c=colors)
plt.show()

这将会产生:

   Animation  length  year
0          1     121  1971
1          1      71  1939
2          0       7  1941
3          1      70  1996
4          0      71  1975

输入图像描述


16

scatter中使用c参数。

df.plot.scatter('year', 'length', c='Animation', colormap='jet')

在此输入图片描述


这正是我正在做的事情。我只是使用它们的索引而不是名称。不过你提醒得好。 但是,如果要根据它们的值完全改变颜色,我该怎么做呢?我没有0到1之间的任何东西。 例如,滑块上的1表示黄色,0表示黑色。 - Rainoa
尝试使用这三列的名称。使用不同的颜色映射。 - piRSquared
谢谢,我不知道调色板的事情。 :) - Rainoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接