2014-10-28 1 views
6

Nota: questo è stato risolto in 1.4.3 o successivomatplotlib 1.4.2 con Seaborn: marcatori di linea non funziona


utilizzare il pacchetto di complottare Seaborn e ho appena aggiornato alla versione più recente di Matplotlib. Ora, i grafici con simboli punto non vengono più visualizzati. Il codice che prima era funzionale ora crea grafici vuoti, ma solo quando Seaborn viene importato. Ecco alcuni esempi di codice:

versione
import matplotlib.pyplot as plt 
import matplotlib 
import numpy as np 

print matplotlib.__version__ 

Matplotlib:

1.4.2 

creare un grafico senza Seaborn:

x = np.linspace(0,2,101) 
y = np.sin(2*np.pi*x) 
plt.plot(x,y,'.') 

sin function with dots at each data point

Import Seaborn, stampare la versione:

import seaborn as sns 
print sns.__version__ 

Seaborn versione:

0.4.0 

creare un grafico linea con Seaborn importati:

plt.plot(x,y,'-') 

sin function with a solid line connecting each data point

Creazione di un diagramma a punti con Seaborn importati dà un insieme vuoto di assi:

plt.plot(x,y,'.') 

an empty set of axes

Tutto sopra è stato fatto nel notebook IPython, ma ho appena provato quanto segue in Spyder con lo stesso risultato:

import matplotlib.pyplot as plt 
import matplotlib 
import numpy as np 

print matplotlib.__version__ 

x = np.linspace(0,2,101) 
y = np.sin(2*np.pi*x) 
plt.figure() 
plt.plot(x,y,'.') 

import seaborn as sns 
print sns.__version__ 
plt.figure() 
plt.plot(x,y,'-') 

plt.figure() 
plt.plot(x,y,'.') 

plt.show() 

Cosa sta succedendo?

+0

sto vedendo un problema simile con Matplotlib 2.0.0 e seaborn 0.6.0, sebbene nel mio caso la trama '.' funzioni bene, ma la trama' + 'no. – abeboparebop

risposta

3

Sembra che ciò sia dovuto a un errore in Matplotlib.

https://github.com/matplotlib/matplotlib/issues/3711

https://github.com/mwaskom/seaborn/issues/344

si potrebbe semplicemente avere a declassare per il momento.

PS: Che succede Doug.

+0

Ho aggiunto una nota sul thread di emissione Seaborn su una soluzione alternativa in Seaborn che dovrebbe evitare questo problema per il momento. – mwaskom

+0

La soluzione postata sul thread di emissione Seaborn risolve il problema. Solo per salvare gli altri un clic laggiù, ho inserito quanto segue dopo la mia chiamata di importazione seaborn: sns.set_context (rc = {'lines.markeredgewidth': 0.1}). Grazie Derric e mwaskom! – ollerend

+0

Per coloro che finiscono qui ma non fanno clic per arrivare al problema, Seaborn 0.5.1 è stato rilasciato con una soluzione per questo bug. – mwaskom

0

Una soluzione (di cui i link GitHub in altra risposta) è quella di impostare in modo esplicito markeredgewidth (o mew) nella chiamata a plot:

plt.plot(x,y,'.', mew=1)