Pandas/Python/Matplotlib散点图标记颜色取决于单元格中的值
我一直在寻找如何根据“第三”列的值在散点图上设置点的解决方案。我找不到任何现成的解决方案,因此我构建了自己的解决方案,我想分享它(也许有人会利用它):) 如果这不是一个地方张贴它,那么我很抱歉,请删除它 假设存在一个数据帧“散射数据”,如下所示:Pandas/Python/Matplotlib散点图标记颜色取决于单元格中的值,python,pandas,matplotlib,colors,scatter,Python,Pandas,Matplotlib,Colors,Scatter,我一直在寻找如何根据“第三”列的值在散点图上设置点的解决方案。我找不到任何现成的解决方案,因此我构建了自己的解决方案,我想分享它(也许有人会利用它):) 如果这不是一个地方张贴它,那么我很抱歉,请删除它 假设存在一个数据帧“散射数据”,如下所示: lad2014_name Male Female Result 0 ABERDEEN CITY 95154 97421 -21.78 1 ABERDEENSHIRE 101875 105141 -13.
lad2014_name Male Female Result
0 ABERDEEN CITY 95154 97421 -21.78
1 ABERDEENSHIRE 101875 105141 -13.10
2 ADUR 24047 26574 -16.16
3 ALLERDALE 38346 40192 -44.56
.
.
.
499 AMBER VALLEY 48720 51502 -3.56
我想在散点图上画出公的和母的,但是我也想通过改变标记的颜色来显示“结果”是阴性还是阳性。所以我做了这件事:
def resultColour(z):
colour = '#e31a1c'
if z > 0:
colour = '#1f78b4'
return colour
#Plotting the scatter plot
plt.figure(figsize=(12,10))
for index, row in scatterData.iterrows():
x = row.Male
z = row.Result
y = row.Female
t = resultColour(z)
plt.scatter(x, y, c=t,s=85)
plt.xlabel('X axis lable',fontsize=15)
plt.ylabel('Y axis lable',fontsize=15)
plt.title('Plot title',fontsize=18)
plt.plot()
它产生如下散射
您实际上可以在
plt.scatter
中为c
关键字参数提供一个值数组。它们将根据您可以使用cmap
关键字设置的颜色映射映射到标记颜色
例如:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm
np.random.seed(0)
df = pd.DataFrame({'x':np.random.randint(0,10,size=20),
'y':np.random.randint(0,10,size=20),
'z':np.random.uniform(-1,1,size=20)})
plt.figure(figsize=(5,5))
plt.scatter(df.x, df.y, c = df.z>0, cmap = cm.RdYlGn)
产生
cm
模块有一个大的。如果您需要自己的确切颜色,则可以使用以下列出的颜色贴图:
cmap = matplotlib.colors.ListedColormap(['#e31a1c','#1f78b4'])
plt.scatter(df.x, df.y, c = df.z>0, cmap = cmap)
谢谢这确实产生了与我的解决方案相同的结果,但更简单、更优雅。