在一个图中绘制两个单独的图例

问题描述

我有两个数据框,其中的值是我使用子图绘制的图形。一张图是散点图,另一张图是一条线。现在我想为这个图表添加两个独立的图例。我画了一个,但看起来它只是一个转换成图例的数据框。如何为一个图形或一个既有点又有线的图例获得两个独立的图例?

代码如下

fig = plt.figure()
ax = fig.add_subplot(111)
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","darkblue","brown","gray","cyan","magenta"])
l1 = ax.scatter(x1,y1,marker='o',label=n1,c=colors,cmap='Dark2')
ax.plot(x2,y2,color="orange")
plt.ylabel('CaO [mmol/l]')
plt.xlabel('OH [mmol/l]')
plt.ylim(0,14)
plt.xlim(27,90)
plt.legend()

这是实际图表:

enter image description here

解决方法

如果没有您的数据,很难准确回答您的问题。要在同一个图上有两个单独的图例,您可以让两个 y 轴(左和写)共享相同的 x 轴。然后可以为每个 y 轴分配自己的图例,如下所示:

std::vector<int> v;

std::ranges::for_each(v,[](const auto& n) {});

const auto squared = v | std::views::transform([](const auto& n) { return n*2; });