[英]plot multiple columns on same graph seaborn
我有一个pandas dataFrame,我正在用seaborn绘图:
g = sns.FacetGrid(readCov, col='chr', col_wrap = 4, size=4)
g.map(plt.scatter, 'pos', 'bergC9', hue = edgecolor='white')
g.set(xlim= (0, 250000))
这很有效,并为“chr”列中的每个'chr'提供了一个图表。 但是,我希望每个图表上都有多个列。 目前只显示一个,名为'bergC9'。 我想在不同颜色的同一图表上放置更多列。
有任何想法吗?
谢谢!
编辑:输入数据文件
chr description pos bergB7 bergC9 EvolB20
1 1 '"ID=PBANKA_010290;Name=PBANKA_010290;descript... 108389 0.785456 0.899275 0.803017
2 1 '"ID=PBANKA_010300;Name=PBANKA_010300;descript... 117894 1.070673 0.964203 0.989372
3 1 '"ID=PBANKA_010310;Name=PBANKA_010310;descript... 119281 1.031106 1.042189 0.883518
4 1 '"ID=PBANKA_010320;Name=PBANKA_010320;descript... 122082 0.880109 1.031673 1.026539
5 1 '"ID=PBANKA_010330;Name=PBANKA_010330;descript... 126075 0.948105 0.969198 0.849213
编辑:我想要一个散点图,其中pos为x轴,bergB7,bergC9,EvolB20等,它们都是'应变'作为y轴,因此在同一图上有几个应变。 我能够通过重新格式化我的数据集来实现这一点,因此它现在有一个'strain'参数或列并连接所有y数据。 现在我可以使用带有'strain'的hue语法。 我想不必重新格式化我的所有数据集。 我认为有可能创建一个引用我想要绘制的所有列的循环,但我尝试了几种语法无济于事。 我还有其他方法可以实现这一目标,但是这些方法创建了新的数据集,我知道这不是以编程方式进行的方式。 我是新用户,想要正确开始。
这就是输出应该是什么样的(显示的15个图形面板的子集):(我无法发布图像,因为我的'声誉'不够高)
编辑数据有两个chr
案例。 应该适用于任何数量的“菌株”列。 数据确实需要重新格式化; 来自seaborn文件:
要使用这些功能,您的数据必须位于Pandas DataFrame中,并且必须采用Hadley Whickam称之为“整洁”数据的形式。 简而言之,这意味着您的数据框应该构造成每列都是一个变量,每一行都是一个观察。
但是熊猫很容易做到:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
readCov = pd.DataFrame([ (1, '\'"ID=PBANKA_010290;Name=PBANKA_010290;descript...', 108389, 0.785456, 0.899275, 0.803017),
(1, '\'"ID=PBANKA_010300;Name=PBANKA_010300;descript...', 117894, 1.070673, 0.964203, 0.9893719999999999),
(1, '\'"ID=PBANKA_010310;Name=PBANKA_010310;descript...', 119281, 1.0311059999999999, 1.042189, 0.883518),
(2, '\'"ID=PBANKA_010320;Name=PBANKA_010320;descript...', 122082, 0.880109, 1.031673, 1.0265389999999999),
(2, '\'"ID=PBANKA_010330;Name=PBANKA_010330;descript...', 126075, 0.948105, 0.969198, 0.8492129999999999)],
columns=[u'chr', u'description', u'pos', u'bergB7', u'bergC9', u'EvolB20'],
)
meltCov = pd.melt(readCov,id_vars=['chr','description','pos'], var_name='strain')
g = sns.FacetGrid(meltCov, col='chr', hue='strain')
g.map(plt.scatter, 'pos','value')
g.set_xticklabels(rotation=45)
g.add_legend()
#this plots a figure per script automatically
from os.path import realpath, basename
s = basename(realpath(__file__))
fig = plt.gcf()
fig.savefig(s.split('.')[0])
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.