2013-04-29 8 views
6

Nie mogę wymyślić, jak dodać obramowanie wokół figury, to moje zrozumienie, że byłaby to figura.edgecolor parametr lub savefig (edgecolor), ale wydaje się, że to nie działa. Używam matplotlib 1.1.1. Spodziewam się ten kod, aby narysować czerwoną ramkę wokół rysunku:Matplotlib nie widzi efektu ustawienia edgecolor w plt.savefig() lub plt.figure()

import matplotlib.pyplot as plt 
plt.plot([1,2,3]) 
plt.savefig('test.png', edgecolor='r', facecolor='g') 

Kiedy patrzę na rysunku ma on zielonego facecolor, ale nie widzę czerwoną edgecolor?

Następujące nie działa albo:

import matplotlib.pyplot as plt 
plt.figure(edgecolor='r', facecolor='g') 
plt.plot([1,2,3]) 
plt.show() 

Znowu widzę zieloną facecolor, ale nie czerwony edgecolor. Co ja robię źle?

Wszelkie pomysły?

Odpowiedz

6

Zgodnie z dokumentacją matplotlib.figure.Figure(), krawędź figury linewidth jest domyślnie ustawiona na 0.0. Można wyobrazić sobie edgecolor jeśli podbić tę wartość w jednej ze swoich fragmentów kodu:

import matplotlib.pyplot as plt 
plt.figure(linewidth=2) 
plt.plot([1,2,3]) 
plt.savefig('test.png', edgecolor='r', facecolor='g') 

czyli

import matplotlib.pyplot as plt 
plt.figure(edgecolor='r', facecolor='g', linewidth=2) 
plt.plot([1,2,3]) 
plt.show() 

linewidth=0.0 jest dobrym domyślnym, ale powinno być lepiej udokumentowane w matplotlib.pyplot.savefig().

+0

Fantastyczne, wiedziałem, że musi to być coś prostego, co przeoczyłem. Dziękuję Ci. – bobl2424

+0

Tak, to musi być lepiej udokumentowane. Zajęło mi to trochę czasu, zwłaszcza, że ​​'savefig()' zwykle nadpisuje ustawienia kolorów z 'Figure()', ale najwyraźniej nie jest parametrem 'linewidth'. – fgb

+0

Należy również zauważyć, że można użyć większej liczby kolorów za pomocą opcji 'Colors()': http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.colors – yPhil

Powiązane problemy