我有一个Python3.6代码,它产生两个图,一个有三个轴,一个有两个轴。带有三个轴的图表有一个细线图例。
不幸的是,第二个绘图图例的线条的厚度等于标签的高度:
以下是第二个数字的代码:
如何减少图例中线条的粗细?
似乎代码没有发布到帖子中。
这是:
#two plots on one figure
def two_scales(ax1, time, data1, data2, c1, c2):
ax2 = ax1.twinx()
ax1.plot(time, data1, 'r')
ax1.set_xlabel("Distance ($\AA$)")
ax1.set_ylabel('Atom Charge',color='r')
ax2.plot(time, data2, 'b')
ax2.set_ylabel('Orbital Energy',color='b')
return ax1, ax2
t = data[:,0]
s1 = data[:,3]
s2 = data[:,5]
fig, ax = plt.subplots()
ax1, ax2 = two_scales(ax, t, s1, s2, 'r', 'b')
def color_y_axis(ax, color):
for t in ax.get_yticklabels():
t.set_color(color)
return None
color_y_axis(ax1, 'r')
color_y_axis(ax2, 'b')
plt.title('Molecular Transforms')
patch_red = mpatches.Patch(color='red',label='Atom Charge')
patch_blue = mpatches.Patch(color='blue',label='Orbital Energy')
plt.legend(handles = [patch_red,patch_blue])
plt.draw()
plt.show()
name_plt = name+'-fig2.png'
fig.savefig(name_plt,bbox_inches='tight')
答案 0 :(得分:1)
听起来你想要一个代表你的传奇的线但实际上使用了一个补丁。可以找到示例和详细信息here。你可以使用像这个小例子的行:
import matplotlib.lines as mlines
import matplotlib.pyplot as plt
line_red = mlines.Line2D([], [], color='red',label='Atom Charge')
line_blue = mlines.Line2D([], [], color='blue',label='Orbital Energy')
plt.legend(handles = [line_red,line_blue])
plt.show()
答案 1 :(得分:0)
为图例创建标签的常用方法是使用艺术家的label
参数在图例中显示ax.plot(...., label="some label")
。使用具有此标签集的实际艺术家,确保图例显示与艺术家对应的符号;如果是线图,这自然就是一条线。
import matplotlib.pyplot as plt
time=[1,2,3,4]; data1=[0,5,4,3.3];data2=[100,150,89,70]
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
l1, = ax1.plot(time, data1, 'r', label='Atom Charge')
ax1.set_xlabel("Distance ($\AA$)")
ax1.set_ylabel('Atom Charge',color='r')
l2, = ax2.plot(time, data2, 'b', label='Orbital Energy')
ax2.set_ylabel('Orbital Energy',color='b')
ax1.legend(handles=[l1,l2])
plt.show()