繁体   English   中英

Plot 两个单独的图例合二为一 plot

[英]Plot two separate legend in one plot

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

代码看起来像这样

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()

这是实际的图表:

在此处输入图像描述

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

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df1 = pd.read_csv(r'C:\Users\Pavol\OneDrive - VŠCHT\Keramika\Článok\Frattini.csv', sep=';')
df2 = pd.read_csv(r'C:\Users\Pavol\OneDrive - VŠCHT\Keramika\Článok\Frattini-norma.csv', sep=';')

x1 = df1.iloc[[0]]
y1 = df1.iloc[[1]]
x2 = df2['OH']
y2 = df2['Standard']

fig = plt.figure(figsize=(12,5))
fig.suptitle("title")
ax1 = fig.add_subplot()
ax2 = ax1.twinx()

colors = np.array(["red","green"])
ax1.scatter(x1,y1, marker='o', c=colors, label = 'legend1', cmap='Dark2')
ax2.plot(df2['OH'], df2['Standard'], label ="legend2")
ax1.set(xlabel='OH [mmol/l]', ylabel= 'CaO [mmol/l]')
plt.ylim(0, 14)
plt.xlim(27, 90)

ax1.legend(loc = 'upper left')
ax2.legend(loc = 'upper right')
plt.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM