簡體   English   中英

在相同的圖形seaborn上繪制多個列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM