2013-06-25 4 views
4

Я рисую кривые в Кельвине. Я хотел бы иметь левую YAxis, чтобы показать единица в Кельвинах и правильные YAxis, чтобы показать их в градусах Цельсия, и оба округлены до ближайшего целого числа (так что клещи не выровнены, а TempK = TempC + 273,15)matplotlib: левый yaxis и правый yaxis иметь разные единицы

fig=plt.figure 
figure=fig.add_subplot(111) 
figure.plot(xpos, tos, color='blue') 

Я не должен использовать twinx(), так как он позволяет накладывать кривые с двумя разными шкалами, что не является моим случаем (только правая ось должна быть изменена, а не кривые).

+0

Для этого вам нужно использовать 'twinx()', поскольку по определению вы используете две разные шкалы. Используйте 'set_xticklabels()' для определения нужных меток. – Greg

+0

Спасибо. Да, на самом деле я понял, что после публикации, и в итоге пришел к решению (см. Ниже). –

+0

Это сообщение в список рассылки может оказаться полезным; http://sourceforge.net/mailarchive/forum.php?thread_name=012701ce5892%24683e5cb0%2438bb1610%24%40earthlink.net&forum_name=matplotlib-devel – tacaswell

ответ

5

enter image description here Я нашел следующее решение:

fig=plt.figure 
figure=fig.add_subplot(111) 
figure.plot(xpos, tos, color='blue') 
... plot other curves if necessary 
... and once all data are plot, one can create a new axis 

y1, y2=figure.get_ylim() 
x1, x2=figure.get_xlim() 
ax2=figure.twinx() 
ax2.set_ylim(y1-273.15, y2-273.15) 
ax2.set_yticks(range(int(y1-273.15), int(y2-273.15), 2)) 
ax2.set_ylabel('Celsius') 
ax2.set_xlim(x1, x2) 
figure.set_ylabel('Surface Temperature (K)') 

Не забудьте установить XAxis оси TwinX!

+2

Ваш 'figure'variable на самом деле не фигура, а топоры, сбивающие с толку. – xApple

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