Удалить верхнюю и правую оси в matplotlib после увеличения полей? - PullRequest
2 голосов
/ 18 ноября 2011

Создание фигуры с желаемым размером и полями:

fig = plt.figure(figsize=(3,5))
ax = plt.Axes(fig,[left,bottom,width,height])
fig.add_axes(ax)

Это вместе с легендами, линиями сетки и всем остальным дает мне то, что я ожидаю, за исключением того, что я не могу удалить верхнюю и правую оси.Я упомянул похожий вопрос здесь , который направляет меня к примеру с matplotlib .

Я пытался

ax = Subplot(fig,111)
fig.add_subplot(ax)

ax.axis["top"].set_visible(False)
ax.axis["right"].set_visible(False)

stackoverflow не позволил бы мнеопубликуйте изображение еще, потому что у меня не хватает точек, поэтому я надеюсь, что моего рисунка будет достаточно.

_________
|        |
| |
| |
|_|
  |_________

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

Я попытался просмотреть сайт matplotlib, но мне все еще трудно понять, что именно делают add_axes () и add_subplot ().

1 Ответ

2 голосов
/ 18 ноября 2011

Вот решение, которое показывает два возможных способа решения вашей проблемы:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.axislines import Subplot

left,bottom,width,height= -0.02 , 0.12, 1, 0.9
fig = plt.figure(figsize=(3,5))
ax1 = plt.Axes(fig,[left,bottom,width,height])
ax1.plot([1,2,3,4],'b') # plot on the first axes you created
fig.add_axes(ax1)

# using subplot you are acually using higher level objects

ax2 = Subplot(fig,111) # this addes another axis instance
fig.add_subplot(ax2)
ax2.axis["top"].set_visible(False)
ax2.axis["right"].set_visible(False)
ax2.plot([1,2,3,4,5],'r') # thos plots on the second

# now comment everything in ax2, and uncomment ax3
# you will get a crude, low level control of axes
# but both do what you want...

#ax3 = plt.Axes(fig,[left+0.2,bottom-0.2,width,height])
#ax3.plot([1,2,3,4],'g') # plot on the first axes you created

#for loc, spine in ax3.spines.iteritems():
#    if loc in ['left','bottom']:
#        spine.set_position(('outward',10)) # outward by 10 points
#    if loc in ['right','top']:
#        spine.set_color('none') # don't draw spine
#fig.add_axes(ax3)
plt.show()

The image is made with the crude low level ax3 object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...