No Python, com o Matplotlib, como um gráfico de dispersão com círculos vazios pode ser plotado? O objetivo é desenhar círculos vazios em torno de alguns dos discos coloridos já plotados scatter()
, de modo a destacá-los, idealmente sem ter que redesenhar os círculos coloridos.
Eu tentei facecolors=None
, sem sucesso.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
fonte
fonte
Respostas:
Na documentação para dispersão:
Tente o seguinte:
Nota: Para outros tipos de gráficos, consulte este post sobre o uso de
markeredgecolor
emarkerfacecolor
.fonte
facecolors=None
não funciona, o que me tropeçou.markerfacecolor='none'
assim que é agora.markerfacecolor='none'
tente adicionarmarkeredgewidth=1.0
%matplotlib inline
eimport matplotlib.pyplot as plt
, em seguida, definir o Seaborn como o padrão de plotagem porimport seaborn as sns; sns.set()
Isso funcionaria?
ou usando plot ()
fonte
plot
vez de #scatter
scatter
, você precisa especificaredgecolors
comoedgecolors='r'
. Caso contrário, os círculos desaparecem. Veja aquiAqui está outra maneira: isso adiciona um círculo aos eixos atuais, plotagem ou imagem ou o que for:
(Os círculos na imagem são compactados em reticências porque
imshow aspect="auto"
).fonte
No matplotlib 2.0, existe um parâmetro chamado
fillstyle
que permite um melhor controle na maneira como os marcadores são preenchidos. No meu caso, usei-o com barras de erro, mas funciona para marcadores em geral http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
aceita os seguintes valores: ['full' | 'esquerda' | 'certo' | 'fundo' | 'top' | 'Nenhum']Há duas coisas importantes a serem lembradas ao usar
fillstyle
,1) Se mfc for definido com qualquer tipo de valor, ele terá prioridade; portanto, se você definiu o estilo de preenchimento como 'none', isso não entrará em vigor. Portanto, evite usar mfc em conjunção com fillstyle
2) Você pode controlar a largura da borda do marcador (usando
markeredgewidth
oumew
) porque se o marcador for relativamente pequeno e a largura da borda for espessa, os marcadores parecerão preenchidos, mesmo que não sejam.A seguir, um exemplo usando barras de erro:
fonte
Baseando-se no exemplo de Gary Kerr e, conforme proposto aqui, é possível criar círculos vazios relacionados aos valores especificados com o seguinte código:
fonte
.scatter()
não. Por contexto, eu também estava aplicando um mapa de cores (c=z, cmap='jet'
).Então, suponho que você queira destacar alguns pontos que se encaixam em um determinado critério. Você pode usar o comando do Prelude para fazer um segundo gráfico de dispersão dos pontos iluminados com um círculo vazio e uma primeira chamada para plotar todos os pontos. Verifique se o parâmetro s é suficientemente pequeno para que os círculos vazios maiores incluam os menores preenchidos.
A outra opção é não usar dispersão e desenhar os patches individualmente usando o comando circle / ellipse. Estes estão em matplotlib.patches, aqui está um código de exemplo sobre como desenhar retângulos de círculos etc.
fonte