我试图用置信带绘制一些数据.我正在为每个数据流创建两个图:plot和fill_between.我希望图例看起来类似于图表,其中每个条目都有一个框(置信区域的颜色),中间有一条较暗的实线.到目前为止,我已经能够使用补丁来创建矩形图例键,但我不知道如何实现中心线.我尝试使用舱口,但无法控制位置,厚度或颜色.
我最初的想法是尝试组合两个补丁(Patch和2DLine); 然而,它还没有奏效.有更好的方法吗?我的MWE和当前数字如下所示.
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,1,11)
y = np.linspace(0,1,11)
plt.plot(x, y, c='r')
plt.fill_between(x, y-0.2, y+0.2, color='r', alpha=0.5)
p = mpatches.Patch(color='r', alpha=0.5, linewidth=0)
plt.legend((p,), ('Entry',))
Run Code Online (Sandbox Code Playgroud)

我想在图例的同一行上识别两个不同的符号(具有不同颜色)。下面,我尝试使用代理艺术家执行此操作,但结果是它们在图例中彼此堆叠。我希望它们彼此相邻或一个在另一个之上——所以它们都是可见的。
from pylab import *
import matplotlib.lines as mlines
#define two colors, one for 'r' data, one for 'a' data
rcolor=[69./255 , 115./255, 50.8/255 ]
acolor=[202./255, 115./255, 50.8/255 ]
#Plot theory:
ax2.plot(rho, g_r, '-',color=rcolor,lw=2)
ax2.plot(rho, g_a, '-',color=acolor,lw=2)
#Plot experiment:
ax2.scatter(X_r, Y_r,s=200, marker='s', facecolors='none', edgecolors=rcolor);
ax2.scatter(X_a, Y_a,s=200, marker='^', facecolors='none', edgecolors=acolor);
#Create Proxy Artists for legend
expt_r = mlines.Line2D([], [], fillstyle='none', color=rcolor, marker='s', linestyle='', markersize=15)
expt_a = mlines.Line2D([], [], fillstyle='none', color=acolor, marker='^', linestyle='', markersize=15)
thry_r = mlines.Line2D([], [], fillstyle='none', color=rcolor, marker='', markersize=15) …Run Code Online (Sandbox Code Playgroud) 我制作了一个带有 2 个 Y 轴的图,其中一个有条形图,另一个有一条线,我想为两个图添加一个共同的图例。
如果我添加以下内容:
axis1.legend([(bar1, line1), (bar2, line2)], ['Solution 1', 'Solution 2'],
loc='upper left', numpoints=1)
Run Code Online (Sandbox Code Playgroud)
我几乎得到了我想要的东西,除了标记/艺术家(不确定哪个术语适合这里),这两种解决方案重叠,如下所示:
是否可以先让酒吧艺术家和线条艺术家并排,然后是标签?
我想这与图例处理程序有关,根据官方的Legend 指南,元组处理程序“简单地将给定元组中的每个项目的句柄绘制在彼此的顶部”。谁能帮我编写一个新的自定义处理程序,它并排绘制句柄?
编辑:这个问题似乎与此非常相似。