2017-02-07 17 views
0

Я не знаю, как сказать Matplotlib использовать другую ось в одной своеобразной сюжетные из массива в подзаговоре:разные оси у в один массив сюжетные

import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 

def plotter(): 
    y=np.random.rand(10) 
    y1 = np.random.rand(10)*100 
    x = np.arange(len(y)) 

    f, axarr = plt.subplots(2,2,sharex=True) 
    axarr[0][0].errorbar(x,y,) 
    axarr[0][0].errorbar(x,y1) 
    axarr[1][1].twinx() 
    axarr[1][1].errorbar(x,y) 
    axarr[1][1].errorbar(x,y1) 
    plt.show() 

plotter() 

Это дает: enter image description here Вопрос заключается в том, что мой один набор данных больше в 100 раз, поэтому их отображение на одной оси y бесполезно. То, что я хочу иметь для нижней правой панели (и только для этой панели), - это одна ось y, которая колеблется от (0,10) в правой части графика, а другая - от (0,100) с другой стороны. Синяя линия должна быть представлена ​​оси вправо (0,10) у, а синяя линия должна быть представлена ​​слева (0100) у оси

+0

Я до сих пор не понимаю, что вы пытаетесь сделать. –

+0

@SamMarinelli теперь понятно? – Sebastiano1991

+1

Я получаю это сейчас. К сожалению, я не знаю, как это сделать. –

ответ

0

Один из способов сделать это:

import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 

def plotter(): 
    y=np.random.rand(10) 
    y1 = np.random.rand(10)*100 
    x = np.arange(len(y)) 

    f, axarr = plt.subplots(2,2,sharex=True) 
    axarr[0][0].errorbar(x,y,) 
    axarr[0][0].errorbar(x,y1) 
    axarr[1][1].errorbar(x,y) 
    ax2 = axarr[1][1].twinx() 
    ax2.plot(x,y1, 'r') 
    #ax2.tick_params('y', colors='r') 
    plt.show() 


plotter() 

Что дает это:

enter image description here