2014-10-28 13 views
6

Uwaga: To jest ustalona w 1.4.3 lub nowszymatplotlib 1.4.2 z Seaborn: markery linia nie funkcjonuje


używam kreślenia pakiet Seaborn i właśnie uaktualniony do najnowszej wersji matplotlib. Teraz działki z symbolami kropek nie są już renderowane. Kod, który wcześniej działał, tworzy puste wykresy, ale tylko wtedy, gdy importowany jest Seaborn. Oto niektóre przykładowy kod:

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

print matplotlib.__version__ 

matplotlib:

1.4.2 

Utwórz wykres bez 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

importu Seaborn, wydrukować wersję:

01 Wersja

Seaborn:

0.4.0 

Utwórz wykres liniowy z Seaborn przywożone:

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

sin function with a solid line connecting each data point

Tworzenie wykres punktowy z Seaborn importowanego daje pusty zbiór osiach:

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

an empty set of axes

Wszystko powyżej zostało zrobione w notatniku ipython, ale ja po prostu próbowałem następujące w Spyder z takim samym skutkiem:

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() 

Co się dzieje?

+0

widzę podobny problem z matplotlib 2.0.0 i seaborn 0.6.0, chociaż w moim przypadku, plotstyle '.' działa dobrze, ale spisek' + 'nie działa. – abeboparebop

Odpowiedz

3

Wygląda na to, że jest to spowodowane błędem w Matplotlib.

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

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

Może po prostu trzeba obniżyć na jakiś czas.

PS: Co słychać Doug.

+0

Dodałem notatkę do wątku o problemach z seabornem dotyczącą obejścia problemu u samicy, które powinno na razie uniknąć tego problemu. – mwaskom

+0

Zamieszczone obejście problemu z wątku problemu seaborn rozwiązuje problem. Aby zapisać inne kliknięcie, umieściłem następujące polecenie po wywołaniu importu morskiego seaborn: sns.set_context (rc = {'lines.markeredgewidth': 0.1}). Dzięki Derric i mwaskom! – ollerend

+0

Dla tych, którzy kończą tutaj, ale nie klikają do wydania, seaborn 0.5.1 został wydany z obejściem tego błędu. – mwaskom

0

Obejście (wymienionych w linkach GitHub w drugiej odpowiedzi) jest jawnie ustawić markeredgewidth (lub mew) w zaproszeniu do plot:

plt.plot(x,y,'.', mew=1) 
Powiązane problemy