Pergunta

Em vez do padrão "encaixotado" estilo eixo Quero ter apenas o eixo esquerdo e inferior, ou seja:.

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

Isso deve ser fácil, mas eu não consigo encontrar as opções necessárias na documentação.

Foi útil?

Solução

Esta é a solução sugerida Matplotlib 3 a partir do site oficial AQUI :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

enter descrição da imagem aqui

Outras dicas

Como alternativa, este

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

parece conseguir o mesmo efeito em um eixo, sem perder o apoio etiqueta girada.

(Matplotlib 1.0.1; solução inspirado por este ).

[editar] matplotlib agora (2013-10) na versão 1.3.0, que inclui este

Essa capacidade foi realmente acabou de adicionar, e você precisa da versão Subversion para ele. Você pode ver o código de exemplo aqui .

Estou apenas a atualização para dizer que há um melhor exemplo online agora. Ainda precisa a versão Subversion no entanto, não houve uma liberação com isso ainda.

[editar] Matplotlib 0.99.0 RC1 acaba de ser lançado e inclui esta capacidade.

Se você não precisa de carrapatos e tal (por exemplo, para traçar ilustrações qualitativos) você também pode usar essa solução rápida:

Adicione o eixo invisível (por exemplo, com plt.gca().axison = False) e, em seguida, levá-los manualmente com plt.arrow.

(Este é mais um comentário extensão, além das respostas abrangentes aqui.)


Note que podemos esconder cada um destes três elementos de forma independente um do outro:

  • Para ocultar a fronteira (aka "coluna vertebral"): ax.set_frame_on(False) ou ax.spines['top'].set_visible(False)

  • Para ocultar os carrapatos: ax.tick_params(top=False)

  • Para ocultar os rótulos: ax.tick_params(labeltop=False)

Biblioteca Seaborn tem esta embutido com a função despine ().

Apenas add:

import seaborn as sns

Agora crie seu gráfico. E adicionar no final:

sns.despine()

Se você olhar para alguns dos valores de parâmetro padrão da função que remove a parte superior e espinha direita e mantém a parte inferior e da coluna esquerda:

sns.despine(top=True, right=True, left=False, bottom=False)

Confira mais documentação aqui: https://seaborn.pydata.org/generated/seaborn.despine.html

Se você precisará removê-lo de todas as suas parcelas, você pode remover espinhos em configurações de estilo (folhas de estilo ou rcParams). Por exemplo:

import matplotlib as mpl

mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False

Se você quiser remover todos os espinhos:

mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top