我的数据包含3列:
zone | pop1 | pop2
---- ---- ----
3 4500 3800
2 2800 3100
1 1350 1600
2 2100 1900
3 3450 3600
我想绘制pop1
和pop2
的散点图,圆的颜色基于zone
的颜色。
到目前为止,我有以下代码:
df = pd.read_csv(file_path)
plt.scatter(df['pop1'],df['pop2'], s = 1)
我该如何给不同的颜色(例如红色,绿色和蓝色)分别对应区域值1、2和3?
答案 0 :(得分:1)
您可以使用seaborn软件包,该软件包使用matplotlib包装器。它具有美丽的地块,功能多样。这是您问题的简单示例。
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import pandas as pd
data = pd.DataFrame({'col1':[4500,2800,1350,2100,3450],
'col2':[3800,3100 ,1650,1900,3600],
'col3':[3,2,1,2,3]})
sns.lmplot(data=data, x='col1', y='col2', hue='col3',
fit_reg=False, legend=True)
#fit_reg is use to fit a line for regression, we need only dots.
答案 1 :(得分:1)
您无需使用其他库,也可以进行以下操作:
colors = {1:'red', 2:'green', 3:'blue'}
for i in range(len(df)):
plt.scatter(df['pop1'].iloc[i], df['pop2'].iloc[i],
c=colors[df['zone'].iloc[i]])
编辑:您不需要使用循环,可以使用如下代码:
colors = {1:'red', 2:'green', 3:'blue'}
plt.scatter(df['pop1'], df['pop2'],
c=[colors[i] for i in df['zone']])
哪个给出输出:
这需要您为zones
中的值创建颜色字典。另外,您将花费一些额外的时间来理解列表。