2013-08-25 16 views
5

Próbuję utworzyć wykres rozproszenia z listami błędów w matplotlib. Poniżej znajduje się przykład tego, jak wygląda mój kod:Matplotlib Errorbar Brakujące czapki

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

x = np.linspace(1,2,10) 
y = np.linspace(2,3,10) 
err = [random.uniform(0,1) for i in range(10)] 

plt.errorbar(x, y, 
     yerr=err, 
     marker='o', 
     color='k', 
     ecolor='k', 
     markerfacecolor='g', 
     label="series 2", 
     capsize=5, 
     linestyle='None') 
plt.show() 

Problem polega na tym, że wydruk wyjściowy nie zawiera żadnych znaków! enter image description here

Co jest warte, jestem na Ubuntu 13.04, Python 2.7.5 | Anaconda 1.6.1 (64-bit) | i Matplotlib 1.2.1.

Czy może to być ukryty rcparam, który należy nadpisać?

+1

zrobił coś zmienić, aby Państwa szarym tle? Zastanawiam się, czy masz problemy zorder (związane z http://stackoverflow.com/questions/14003572/how-to-force-errorbars-to-render-last-with-matplotlib/14007175#14007175). Poprawka do tego problemu jest w 1.3, ale nie 1.2.1 – tacaswell

+2

Twój kod działa poprawnie w moim systemie, podejrzewam, że przy tworzeniu wykresów wyglądał okropnie (tak, wiem, że to subiektywne) coś zepsułeś. Musimy zobaczyć twoje rcparamy, żeby to usunąć. – tacaswell

+0

Tak, faktycznie używam pliku matplotlibrc, który jest znacznie zmieniony od tego, co jest domyślnie. Jaką część pliku chcesz przejrzeć? – astromax

Odpowiedz

9

Co pracował dla mnie było dodanie tego (zgodnie z: How to set the line width of error bar caps, in matplotlib):

(_, caps, _) = plt.errorbar(x,y, yerr=err, capsize=20, elinewidth=3) 

for cap in caps: 
    cap.set_color('red') 
    cap.set_markeredgewidth(10) 
+2

jakikolwiek pomysł _ dlaczego to działa? – tacaswell

+0

Nieszczególnie. Próbowałem to zrozumieć, ale wydaje mi się, że składnia mnie myli. Wiem (_, caps, _) tworzy krotkę krotek, jednak set_color() i set_markeredgewidth() nie jestem zaznajomiony. – astromax

+0

Robią dokładnie to, co brzmią, ustaw kolor i szerokość krawędzi znaczników. http://matplotlib.org/api/artist_api.html#matplotlib.lines.Line2D.set_color http://matplotlib.org/api/artist_api.html#matplotlib.lines.Line2D.set_markeredgewidth – tacaswell