当前位置: 首页 > 知识库问答 >
问题:

Pyplot:在辅助y轴上打印时显示单个图例

巩阳秋
2023-03-14

我有以下代码来绘制熊猫数据帧的数据:

df = pd.read_csv('data.csv')

plt.figure()
plt.title('Title')

ax1 = df.R.plot(style='b', label='Suc. Rate')
ax1.set_ylabel('Success Rate / Coherence')

ax2 = df.C.plot(style='r', label='Coherence')

ax3 = df.S.plot(secondary_y=True, style='g', label='Size')
ax3.set_ylabel('Lexicon Size')

plt.legend()

图是正确的,但图例中仅显示标签为Size的最后一行。如何在一个图例中获得所有3行?

共有1个答案

卫宁
2023-03-14

您需要从每个轴中获取图例句柄标签,然后将所有句柄和标签的列表传递给图例。您可以使用ax.get_legend_handles_labels()来执行此操作:

import matplotlib.pyplot as plt
import pandas as pd

# Some sample data
df = pd.DataFrame({'C' : [4,5,6,7], 'S' : [10,20,30,40],'R' : [100,50,-30,-50]})

fig=plt.figure()
plt.title('Title')

ax1 = df.R.plot(style='b', label='Suc. Rate')
ax1.set_ylabel('Success Rate / Coherence')

ax2 = df.C.plot(style='r', label='Coherence')

ax3 = df.S.plot(secondary_y=True, style='g', label='Size')
ax3.set_ylabel('Lexicon Size')

handles,labels = [],[]
for ax in fig.axes:
    for h,l in zip(*ax.get_legend_handles_labels()):
        handles.append(h)
        labels.append(l)

plt.legend(handles,labels)

plt.show()
 类似资料:
  • 问题内容: 我有一个带有一堆随机x,y坐标的散点图。当前,Y轴从0开始并上升到最大值。我希望Y轴从最大值开始,一直到0。 问题答案: 有一个新的API使它变得更加简单。 和/或

  • 如何在轴上使用绘制值和标签,如下图所示: ? 它应该输出 这个目标是非常容易地以图形方式看到异常值,即1D散点图,如下所示: 但每个点附近都有一个标签。

  • 问题内容: 我在制作具有日期数组和一堆PM 2.5值的散点图时遇到麻烦。我的列表如下所示: 问题答案: 设置大小 设置颜色 还有很多其他参数:http : //matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

  • 你好,我有一个数据框,日期作为索引,股份作为列,我想用日期作为x轴绘制一个特定的股份。我要绘制的系列是:df['APPL']=

  • 问题内容: 我正在使用matplotlib / pylab Python模块创建非常简单的图表。标记Y轴的字母“ y”在其侧面。如果标签较长(例如单词),则不会出现这种情况,以免将图形的外部扩展到左侧过多。但是对于一个字母的标签,这没有意义,标签应该是直立的。我的搜索空白。如何水平打印“ y”? 问题答案: 这很简单。绘制标签后,您可以简单地更改旋转角度: 或者,您可以将旋转作为参数传递,即

  • 我正在使用matplotlib创建OHLC烛台股价图。我正在使用mpl_finance的烛台ohlc模块创建图表。创建图表很简单,但是图表底部的x轴和y轴显示的是给定光标位置的日期和y轴值,但我希望x轴和y轴显示的是日期和日期打开、高、低、关闭(ohlc)值,而不仅仅是日期和y轴光标位置值。quotes数据集的格式为元组列表,其中每个元组包含日期,数字后跟open、high、low、close和v