python - 在seaborn中手动为点添加不同的颜色
问题描述
我想手动为点分配颜色。就像点 1 应该有深蓝色,点 2 应该有浅蓝色,点 3 应该有浅蓝色,我如何在 seaborn 中做到这一点。谢谢
import seaborn as sns
import pandas as pd
d = {'OS_Packages':[0,1,2,4], 'Vulnerabilities': [6,7,3,7],
'text':['point1','point2','point3','point4']}
df = pd.DataFrame(d)
p1 = sns.relplot(x='OS_Packages', y='Vulnerabilities',data=df )
ax = p1.axes[0,0]
for idx,row in df.iterrows():
x = row[0]
y = row[1]
text = row[2]
ax.text(x+.05,y,text, horizontalalignment='left')
解决方案
这是一个简单的例子。控制每个项目颜色的参数hue=
。可以直接控制颜色(如本例所示)或通过间接控制,您需要一个调色板。我添加以防止显示图例,因为这里直接显示颜色。许多变化是可能的。sns.relplot
hue
legend=False
hue
import seaborn as sns
import pandas as pd
d = {'OS_Packages':[0,1,2,4], 'Vulnerabilities': [6,7,3,7],
'text':['point1','point2','point3','point4'],
'colors': ['red', 'green', 'blue', 'yellow']}
df = pd.DataFrame(d)
p1 = sns.relplot(x='OS_Packages', y='Vulnerabilities',data=df, hue='colors', legend=False )
ax = p1.axes[0,0]
for idx,row in df.iterrows():
x = row[0]
y = row[1]
text = row[2]
ax.text(x+.05,y,text, horizontalalignment='left')
from matplotlib import pyplot as plt
plt.show()
这是一个示例,其中包括一种类型的调色板和一个图例。
import seaborn as sns
import pandas as pd
d = {'OS_Packages':[0,1,2,4], 'Vulnerabilities': [6,7,3,7],
'text':['point1','point2','point3','point4'],
'risk': ['high risk', 'medium risk', 'low risk', 'low risk']}
colors = {'high risk' : '#0000AA', 'medium risk' : '#7777DD', 'low risk' : '#9999FF'}
df = pd.DataFrame(d)
p1 = sns.relplot(x='OS_Packages', y='Vulnerabilities',data=df, hue='risk', palette=colors)
ax = p1.axes[0,0]
for idx,row in df.iterrows():
x = row[0]
y = row[1]
text = row[2]
ax.text(x+.05,y,text, horizontalalignment='left')
from matplotlib import pyplot as plt
plt.show()
推荐阅读
- python - 带有 groupby 和条件的 Pandas 滚动总和
- git - 列出 git 中的所有下游本地分支
- android - 持续的 touchListener(类似钢琴的界面)
- linux - 错误:立即不能被单个移动
- python - 如何使用 ajax 实现长芹菜任务的进度条
- mysql - 使用带有 GROUP BY 和 INNER JOIN 的 MIN() 函数删除重复行
- javascript - Node.js:未显示成功和错误消息
- xcode - 是否可以在 Git 中包含 SPM 签出?
- c++ - 整数字面量太大,无法用任何整数类型表示——C++
- c++ - 在线程 C++ 中创建套接字