首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中列的每一行的颜色编码框图

python中列的每一行的颜色编码框图
EN

Stack Overflow用户
提问于 2020-06-20 22:54:19
回答 1查看 44关注 0票数 0

我想要像this一样绘制,其中x轴具有As,Cr,Cd,Pb列值,框图用fish列进行颜色编码。有可能吗?我的数据(Csv):

代码语言:javascript
复制
fish,As,Cr,Cd,Pb
T. ilisha,0.023,0.002,0.039,0.004
G. chapra,0.224,0.011,0.048,0.005
M. vittatus,0.678,0.015,0.236,0.106
G. giuris,0.368,0.011,0.179,0.037
C. punctatus,0.274,0.016,0.124,0.035
M. armatus,0.461,0.015,0.476,0.039
P. ticto,0.437,0.021,0.533,0.048
S. cascasia,0.301,0.009,0.068,0.011
A. mola,0.454,0.016,0.179,0.065
H. fossilis,0.423,0.023,0.423,0.117
L.bata,0.295,0.019,0.287,0.039
W. attu,0.448,0.019,0.231,0.035
EN

回答 1

Stack Overflow用户

发布于 2020-06-21 18:27:08

这是一种为每个元素创建箱图的方法,用一个点来表示每条鱼。

pd.melt用于创建数据帧的“长格式”,这对于seaborn来说更容易使用。基本上创建了两个新列,一个具有元素名称,另一个具有相应值。每个原始行被转换为4个新行。

代码语言:javascript
复制
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
from io import StringIO

df_data = StringIO('''fish,As,Cr,Cd,Pb
T. ilisha,0.023,0.002,0.039,0.004
G. chapra,0.224,0.011,0.048,0.005
M. vittatus,0.678,0.015,0.236,0.106
G. giuris,0.368,0.011,0.179,0.037
C. punctatus,0.274,0.016,0.124,0.035
M. armatus,0.461,0.015,0.476,0.039
P. ticto,0.437,0.021,0.533,0.048
S. cascasia,0.301,0.009,0.068,0.011
A. mola,0.454,0.016,0.179,0.065
H. fossilis,0.423,0.023,0.423,0.117
L.bata,0.295,0.019,0.287,0.039
W. attu,0.448,0.019,0.231,0.035''')
df = pd.read_csv(df_data)

df_long = pd.melt(df, 'fish', var_name='element', value_name='value')

sns.boxplot(x='element', y='value', palette=['lightgrey'], data=df_long, showfliers=False)
sns.scatterplot(x='element', y='value', hue='fish', palette='Set3', edgecolor='black', marker='D', data=df_long, zorder=3)
plt.show()

PS:为了避免scatterplot的标记重叠,可以使用stripplot

代码语言:javascript
复制
sns.stripplot(x='element', y='value', hue='fish', palette='Set3', linewidth=1, edgecolor='black', marker='D', data=df_long, zorder=3)

对于scatterplot (但不是stripplot),您可以为每条鱼使用不同的标记:

代码语言:javascript
复制
markers = ['o', 'v', '^', '8', '*', 'P', 'D', 'X', 's', 'p', '<', '>']
sns.scatterplot(x='element', y='value', hue='fish', palette='Set3', linewidth=1, edgecolor='black', markers=markers, data=df_long, zorder=3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62487390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档