2013-01-14 18 views
21

W tym przykładzie znacznika z mojego wykresu rozproszonego ustawiłem kolor na zielony, a kolor krawędzi na czarny i kreskowania na "|". Aby w ogóle pojawił się wzór kreskowania, muszę ustawić edgecolor, ale kiedy to zrobię, otrzymam bardzo grubą ramkę wokół znacznika. Dwa pytania:Jak zmienić szerokość i szerokość kreski znacznika?

1) Jak ustawić rozmiar tej granicy (najlepiej na 0)?

2) Jak mogę zwiększyć grubość linii kreskowania?

http://img204.imageshack.us/img204/9730/markerp.png

Dzięki!

+0

Do 2 .: Spójrz na [Jak zmienić szerokość linii włazu w matplotlib?] (Http://stackoverflow.com/questions/29549530/how-to-change-the-linewidth-of-hatch- in-matplotlib) – Henhuy

Odpowiedz

34
  1. Wystarczy ustawić linewidth, aby kontrolować grubość obramowania znacznika.
  2. Możesz zwiększyć gęstość kreskowania, powtarzając symbole (w poniższym przykładzie, '|' powtarza się w okienku R/H, należy zauważyć, że w celu uzyskania przekątnych NW-> SE symbol musi być uniknięty, więc potrzebuje dwa razy wiele znaków, aby go naprawdę podwoić - '\\\\' to gęstość 2, a '||||' to gęstość 4). Jednak nie sądzę, że można kontrolować grubość poszczególnych linii w obrębie kreskowania.

Zobacz przykładowy kod poniżej, aby produkować Wykresy rozrzutu, takie jak te: dokumentację example hatching control

import matplotlib.pyplot as plt 
# generate some data 
x = [1,2,3,4,5,8] 
y= [i**2 for i in x] 
y2= [60-i**2+3*i for i in x] 

# plot markers with thick borders 
plt.subplot(121) 
plt.scatter(x,y, s=500, marker='s', edgecolor='black', linewidth='3', facecolor='green', hatch='|') 
# compare with no borders, and denser hatch. 
plt.subplot(122) 
plt.scatter(x,y, s=500, marker='s', edgecolor='black', linewidth='0', facecolor='green', hatch='||||') 

plt.show() 

matplotlib na collections i scatter.

+0

Masz rację co do tego, że nie można zmienić szerokości linii kreskowania, jest to zakodowane na 1 (przynajmniej w aggbackend) – tacaswell

+0

, a dodanie możliwości dostrojenia rozmiaru luków wygląda na ogromne przedsięwzięcie ..... – tacaswell

+0

W przypadku wielokrotności znaku ''\'' pomocne może być użycie operatora mnożenia ciągu Python. Na przykład ze względu na znak escape, dla pojedynczego znaku ''\'', użyłbyś ciągu '' \\ "'. W przypadku powtórzeń 'n' możesz użyć' n * "\\" ', np.' 4 * "\\" 'dałoby ciąg czterech znaków' '\' '. – naitsirhc

Powiązane problemy