在我的傳說手柄的寬度是不同的,爲了更清楚,看看這個例子:是否爲特定句柄設置handlelength,而不是所有?
----- Sin(x)
... Cos(x)
____ Tan(x)
如果我設置handlelength它適用於所有的人,也沒有辦法,以便適應一個寬度,所以我可以爲特定的句柄設置handlelength參數來調整這個例子嗎?
在我的傳說手柄的寬度是不同的,爲了更清楚,看看這個例子:是否爲特定句柄設置handlelength,而不是所有?
----- Sin(x)
... Cos(x)
____ Tan(x)
如果我設置handlelength它適用於所有的人,也沒有辦法,以便適應一個寬度,所以我可以爲特定的句柄設置handlelength參數來調整這個例子嗎?
下面是控制手柄長度(儘管不使用該參數)並將其設置爲圖例(設置圖例大小)中的最大值/長度的一種方法。這種方法直接修改圖例中的線條對象。
LEGEND = ax.legend()
LLINES = LEGEND.get_lines()
MAX = max([max(X) for X in [L.get_xdata() for L in LLINES]])
for L in LLINES:
plt.setp(L,xdata=np.array([L.get_xdata()[0],MAX]))
首先,從傳說中提取線,採用get_lines()
。從這些對象中,可以使用get_xdata()
提取x
值。這在這裏合併成一行,從所有圖例條目中找到最大值x
。
一旦獲得最大值MAX
,您可以遍歷圖例中的所有線對象,並將最大值x
設置爲提取的MAX
。這將使所有線路保持相同的長度。
下面是一個例子。它首先操縱一條傳奇線條的時間更長(傳說不會調整大小,所以只能採取這種做法,只是爲了在這裏展示一個示例)。接下來,它提取新的最大值並相應地設置所有長度。
from math import pi as pi
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0.0,2.0*pi,101)
fig,ax = plt.subplots()
LABEL = ['Sin(x)', 'Cos(x)', 'Tan(x)']
LINE = [[],[],[]]
LINE[0] = ax.plot(x,np.sin(x),label=LABEL[0])
LINE[1] = ax.plot(x,np.cos(x),label=LABEL[1])
LINE[2] = ax.plot(x,np.tan(x),label=LABEL[2])
ax.set_ylim([-1.0,1.0])
LEGEND = ax.legend()
plt.show()
這是與原來的圖例的圖:
現在,一個可以在第一行的長度重新設置爲更長的值,例如:
LLINES = LEGEND.get_lines()
plt.setp(LLINES[0],xdata=np.array([LLINES[0].get_xdata()[0],\
LLINES[0].get_xdata()[1]*1.25]))
plt.show()
從而造成此傳說:
最後,上述方法來檢索最長的線,它適用於所有的傳奇行:
MAX = max([max(X) for X in [L.get_xdata() for L in LLINES]])
for L in LLINES:
plt.setp(L,xdata=np.array([L.get_xdata()[0],MAX]))
plt.show()
中的所有線路得到的具有相同 - 現在增加 - 長度: