如何在Python 3.6中使用seaborn绘制2个图形?

时间:2019-03-22 18:35:54

标签: python dataframe matplotlib seaborn

我希望第一个子图仅包含“Máximo”,“Média”,“Mínimo”,第二个仅包含“ Amplitude”,“ DesvioPadrão”。

我尝试了以下操作:

fncnB = (* 2)
fncnA = (* 3)
fs' fs = zip (map (fncnA . fst) fs) $ map (fncnB . snd) fs

但是得到这个: image

我知道我可以使用plt.plot()进行多次调用,但是有办法解决seaborn吗?

def plotGraph(title, z): #Todo Completar a função com legendas e título.
    sns.set()
    fig, ax = plt.subplots(2,1)
    sns.lineplot(data=z, hue=['Máximo', 'Média', 'Mínimo'], ax=ax[0])
    sns.lineplot(data=z, hue=['Amplitude', 'Desvio Padrão'], ax=ax[1])
    plt.show()

谢谢,但是我意识到我不需要'DesvioPadrão'。有没有办法只说明图例“振幅”?

         **EDITED**

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要对数据框进行子集化,以仅包括要绘制的列:

import pandas as pd
import numpy as np; np.random.seed(0)
import matplotlib.pyplot as plt
import seaborn as sns
import cufflinks as cf

# Generate sample data
df = cf.datagen.lines(5)
df.columns = ['Máximo', 'Média', 'Mínimo', 'Amplitude', 'Desvio Padrão']
df = df.reset_index(drop=True)

def plotGraph(title, z):
    sns.set()
    fig, ax = plt.subplots(2,1)
    fig.suptitle(title)
    sns.lineplot(data=z[['Máximo', 'Média', 'Mínimo']], hue=['Máximo', 'Média', 'Mínimo'], ax=ax[0])
    sns.lineplot(data=z[['Amplitude', 'Desvio Padrão']], hue=['Amplitude', 'Desvio Padrão'], ax=ax[1])
    fig.tight_layout(rect=[0, 0.03, 1, 0.95])
    plt.show()

plotGraph('Plot Title', df)

Plot