2016-02-04 202 views
8

凡例ボックスのマーカーの値を拡大して設定する最も便利な方法は何ですか?私は大きな色のボックスにも満足しています。matplotlibの凡例ボックス内のマーカーのサイズ/アルファ値を変更

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の持つSet伝説シンボル不透明?](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('.') 

メモ:マーカーをもう一度設定する必要があります。私はあなたが伝説の呼び出しでキーワードmarkerscale=##を含むことができ、大きさについては enter image description here

+0

この素晴らしいですが、マーカーを実際に更新するわけではありません。それは古いものに新しいマーカーを描くようです。実際にマーカー自体にアクセスする方法はありませんか? –

3

それがもう少し見えるように、ここで.ではなく,に設定することを提案し、それは、マーカーが大きく(または小さく)なります。

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

関連する問題