2016-02-04 201 views
8

在圖例框中放大和設置標記的alpha值(回到1.0)的最方便的方法是什麼?我對大彩盒也很滿意。在matplotlib的圖例框中更改標記的大小/ alpha

import matplotlib.pyplot as plt 
import numpy as np 

n = 100000 
s1 = np.random.normal(0, 0.05, n) 
s2 = np.random.normal(0, 0.08, n) 
ys = np.linspace(0, 1, n) 

plt.plot(s1, ys, ',', label='data1', alpha=0.1) 
plt.plot(s2, ys, ',', label='data2', alpha=0.1) 
plt.legend(bbox_to_anchor=(1.005, 1), loc=2, borderaxespad=0.) 

enter image description here

+0

的可能的複製[與matplotlib集傳奇符號透明度?(http://stackoverflow.com/questions/12848808/set-legend-symbol-opacity-with-matplotlib) – CaptainKinematics

回答

4

如果你的名字你legend,您可以然後在其中包含的行迭代。例如:

leg=plt.legend(bbox_to_anchor=(1.005, 1), loc=2, borderaxespad=0.) 

for l in leg.get_lines(): 
    l.set_alpha(1) 
    l.set_marker('.') 

筆記,你也必須重新設置標誌。我建議將其設置爲.,而不是,這裏,讓它多一點可見 enter image description here

+0

這很棒,但它並沒有實際更新標記。它似乎爲舊的標誌畫上了一個新的標誌。有沒有辦法實際訪問標記本身? –

3

對於尺寸您可以在通話傳說關鍵字markerscale=##,這將使得標誌更大(或更小)。

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure(1) 
fig.clf() 

x1,y1 = 4.*randn(10000), randn(10000) 
x2,y2 = randn(10000), 4.*randn(10000) 
ax = [fig.add_subplot(121+c) for c in range(2)] 


ax[0].plot(x1, y1, 'bx',ms=.1,label='blue x') 
ax[0].plot(x2, y2, 'r^',ms=.1,label='red ^') 
ax[0].legend(loc='best') 

ax[1].plot(x1, y1, 'bx',ms=.1,label='blue x') 
ax[1].plot(x2, y2, 'r^',ms=.1,label='red ^') 
ax[1].legend(loc='best', markerscale=40) 

The output from the code