如何在matplotlib中获取条形图/堆叠条形图上的标签?

纳雷南杜

我在PyQt Canvas中嵌入了一个非常简单的堆叠matplotlib条形图。我正在尝试基于单击获取条形区域(矩形)的相应标签。但是,当我尝试从事件中打印信息时,我总是会收到_nolegend_的信息。理想情况下,我希望在代码所附的栏中看到相应的标签。

例如,当您单击灰色条时,它应该打印a2

import sys
import matplotlib.pyplot as plt

from PyQt4 import QtGui
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas


def on_pick(event):
    print event.artist.get_label()

def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(640, 480)
    w.setWindowTitle('Pick Test')

    fig = Figure((10.0, 5.0), dpi=100)
    canvas = FigureCanvas(fig)
    canvas.setParent(w)

    axes = fig.add_subplot(111)

    # bind the pick event for canvas
    fig.canvas.mpl_connect('pick_event', on_pick)

    p1 = axes.bar(1,6,picker=2,label='a1')
    p2 = axes.bar(1,2, bottom=6,color='gray',picker=1,label='a2')

    axes.set_ylim(0,10)
    axes.set_xlim(0,5)

    w.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

简单的堆积条形图

Suever

这有点棘手,因为它bar是一个实际上由多个组件组成的复杂图对象。

您可以使用get_legend_handles_labels获取轴的所有艺术家和标签。然后,您可以查看当前艺术家所属的组。

因此,您的回调可能看起来像这样。

def on_pick(event)
    rect = event.artist

    # Get the artists and the labels
    handles,labels = rect.axes.get_legend_handles_labels()

    # Search for your current artist within all plot groups
    label = [label for h,label in zip(handles, labels) if rect in h.get_children()]

    # Should only be one entry but just double check
    if len(label) == 1:
        label = label[0]
    else:
        label = None

    print label

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在matplotlib中为条形图添加组标签?

如何在matplotlib中更新条形图?

matplotlib中缺少标签-条形图

堆叠的条形图,显示R中的反向标签

堆叠条形图上的R ggplot标签

堆叠条形图ggplot2中的标签顺序

如何在堆叠的条形图上同时显示数据标签和总和

如何在条形图上正确放置条形图

如何在matplotlib中设置条形图的大小

如何在堆叠条形图显示中抑制零

如何在条形图上堆叠图标?

如何分别指定matplotlib堆叠条形图的条形中的颜色?

python中的堆叠圆形条形图

如何在直方图中拆分和堆叠条形图,仅填充下部条形图?

R中的堆叠的条形图

如何创建频率堆叠的条形图,但是条形图上的百分比标签和y轴上的频率在R中?

熊猫/ matplotlib中的堆叠式交错水平条形图

如何从Matplotlib条形图获取数据

如何在matplotlib中制作堆积的条形图?

Vega-Lite-如何在每个nar中绘制带有标签的堆叠条形图?

如何在python中使用matplotlib在python中绘制带有标签的简单条形图?

在熊猫中创建堆叠的条形图

如何与订单条形图堆叠

如何在ggplot中绘制堆叠条形图以获取数据类型列表?

如何创建水平堆叠的条形图,在条形图上本身以及条形图上的标签?

如何使ggplot订购堆叠条形图

如何在R中的同一图中显示并排条形图以及堆叠条形图?

IOS 条形图 - 如何在条形图上显示值(1.0、2.0 等)标签并在条形图滚动上显示特定值(如 3 - 7)

如何在 matplotlib 中反转条形图上的刻度顺序?