我有几个绘图函数,每个函数都接收不同类型的数据并用自己的标题和图例进行绘图。然而,当我试图在同一个图形上绘制它们时,前一个图形被覆盖。
我知道这样做的一种方法是调用get_artist()
,但是由于图例是在函数内部创建的,所以这似乎是不可能的。是否有任何类型的LegendHandler
可以执行此操作?从每个绘图中检索图例并在图形上显示它们?我应该从每个函数返回图例吗?
这是我所拥有的简化代码:
def plot_1(fig, data, ax = None):
if ax = None:
ax = fig.add_subplot(111)
ax.plot(data)
ax.set_xlabel('t')
plt.axis('tight')
# Create a legend
colors = {'A':'blue',
'B':'yellow',
'C':'red'}
legend_labels = []
legend_handles = []
for key in colors.keys():
legend_labels.append(key)
p = matplotlib.patches.Rectangle((0, 0), 1, 1, fc = colors[key], alpha = 0.5)
legend_handles.append(p)
ax.legend(legend_handles, legend_labels, loc='center left', bbox_to_anchor=(1, 0.5))
def plot_2(fig, data, ax = None):
if ax = None:
ax = fig.add_subplot(111)
ax.plot(data, color='green', linewidth=1, label='L1')
ax.set_xlabel('t')
ax.autoscale()
ax.legend()
def main():
plot_1(fig, data = data1)
plot_2(fig, data = data2)
我不确定这是否是最好的方法,但由于我多次使用这些绘图模型,我觉得我必须保持它们的函数形式。
get\u artist
,这是在该线程中提到的原因。我现在已经用它解决了这个问题,但我一直在为这个特殊的案例寻找一种更干净的方法。我现在所做的是从每个函数返回一个图例
,并执行该线程中建议的操作
让你的功能回归传奇
def plot_2(fig, data, ax = None):
....
return ax.legend()
那你就可以了
legend1 = plot_1(fig, data = data1)
plot_2(fig, data = data2)
pyplot.gca().add_artist(legend1)
这里建议:matplotlib:同一图形上的两个不同的图例
我正在绘图中绘制多个多边形: 结果图正确地显示了我的多边形,但我想知道哪个多边形对应于图上的哪个索引(例如:绿色多边形是处的多边形)。理想情况下,我想要一个将多边形的颜色与其索引关联起来的图例,但我不知道如何在这样的循环中添加这样的图例。我试过但这不起作用。 多边形的数量是可变的,所以严格分配颜色是不可能的。 如何添加图例?
使用matplotlib时,我可以使用{importmatplotlib.pyplotas plt}因为我使用Tkinter,所以我也会使用PicreCanvasTkAgg来做同样的事情 有人能帮我在如何实现matplotlib的停顿效果在菲格勒CanvasTkAgg。
问题内容: 我是python的新手,正在尝试使用matplotlib在同一图中绘制多条线。我的Y轴的值存储在字典中,并在下面的代码中在X轴中进行相应的值 我的代码是这样的: 但是我得到的是一个单独的图,一个图一个图。有人可以帮助我弄清楚我们的代码有什么问题吗?为什么不能生成多条线图?非常感谢! 问题答案: 这很简单: 您可以随意添加多次。至于,您需要首先指定颜色。所以对于蓝色,它是。对于正常的线是
本文向大家介绍matplotlib 同一图中的多条线/曲线,包括了matplotlib 同一图中的多条线/曲线的使用技巧和注意事项,需要的朋友参考一下 示例
问题内容: 我有这个数据库存储传感器采集数据, 采集(acq)来自不同控制单元(cu)的固定间隔(日期时间) 每个采集在数据表中存储了许多不同的度量 我需要这种观点: 作为: v1是data.value(例如湿度),其中 acq.id_cu = 1 AND data.id_meas = 100 v2是data.value(例如计数器),其中 acq.id_cu = 2 AND data.id_me
我试图使用jFreechart生成两个图,每个图有12个图(在jFreechart中称为系列)。然而,有些图表被简单地跳过了!我知道我在这里有同步问题,并试图使用用户@trashgod在这里提供的方法,但我失败了。我知道我使用摇摆工人的方式是错误的!我不知道怎么修好它 每个图形应该包含10个平行的水平直线的图形。正如你在所附的图像中看到的,一些线条丢失了。这两个数字也必须相同(事实并非如此)。在实