Matplotlib:如何根据列值为散点图圆圈着色
Matplotlib: How to give color to scatterplot circles based on column values
我的数据包含 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?
您可以使用 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.
在不使用额外库的情况下,您也可以使用类似的东西:
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
中的值创建一个颜色字典。此外,您还将花费一些额外的时间来理解列表。
我的数据包含 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?
您可以使用 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.
在不使用额外库的情况下,您也可以使用类似的东西:
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
中的值创建一个颜色字典。此外,您还将花费一些额外的时间来理解列表。