2016-01-28 5 views
1

Я хочу поместить два диаграммы рассеяния на один и тот же график, где ось x является общей, а оси y различны. Я не могу понять, как туда добраться. Для того, чтобы создать свою первую диаграмму рассеяния я делаю:pandas scatterplots: как построить данные на вторичной оси y?

ax=df.plot(kind='scatter', x='vf', y='hf_ratio', xlim=[2e-06,6e-06], ylim=[1,10], 
     color='DarkBlue', s=40, label='a') 
ax.ticklabel_format(axis='x', style='sci', scilimits=(0,0)) 

simple_scatterplot

Теперь я хочу, чтобы добавить второй по оси у правой. Документация Панды дает информацию для добавления дополнительной оси к линии участка (secondary_y=True), так что я пробовал это, но это не похоже на работу:

df.plot(kind='scatter', x='vf', y='hfall', secondary_y=True, 
     color='Red', s=40, label='hfall', ax=ax); 

secondary_y_fail

кажется игнорировать secondary_y=True команды и просто графики на исходной оси y, что не очень полезно. Просто протирать солью в раны, она также удаляет привлекательные белые сетки ...

Если кто-то может с этим помочь, это было бы очень полезно.

ответ

1

Это, кажется, проблема (ошибка?) С кодом Pandas. Об этом сообщается на странице GitHub here. Из объяснения, которое они дают там, происходит то, что ключевое слово secondary_y работает только для графиков линий, а не для участков рассеяния, как вы здесь пытаетесь.

Обходным решением, предлагаемым в ссылке, является использование линейного графика, но изменение стиля на точки (не уверен, что этого достаточно для ваших нужд). В вашем случае это будет примерно так:

ax=df.plot(kind='line', x='vf', y='hf_ratio', xlim=[2e-06,6e-06], 
    ylim=[1,10], color='DarkBlue', style='.', markersize=5, label='a') 

df.plot(kind='line', x='vf', y='hfall', secondary_y=True, 
    color='Red', style='.', markersize=5, label='hfall', ax=ax); 
+0

Большое спасибо за ваш ответ Pablo - ваше решение отлично сработало для меня :) –

Смежные вопросы