简体   繁体   English

Matplotlib在每个酒吧上方绘制线条

[英]Matplotlib Plot Lines Above Each Bar

I would like to plot a horizontal line above each bar in this chart. 我想在此图表中的每个条形图上方绘制一条水平线。 The y-axis location of each bar depends on the variable 'target.' 每个柱的y轴位置取决于变量“目标”。 I want to use axhline, if possible, or Line2D because I need to be able to modify the line style, color, length, and width. 我想使用axhline(如果可能)或Line2D,因为我需要能够修改线条样式,颜色,长度和宽度。

import matplotlib.pyplot as plt
plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')

#Here are the targets that I want to use 
#to plot horizontal lines above each bar...
targets = (6,6,8,6,9)

ind = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

plt.bar(ind, performance, align='center')
plt.xticks(ind, people)

plt.show()

Thanks in advance! 提前致谢!

You need to provide the x_start and x_end to .hlines() . 您需要将x_startx_end提供给.hlines() They can be numpy.array s, in which case each element determines the start/end point of each line segment: 它们可以是numpy.array ,在这种情况下,每个元素确定每个线段的起点/终点:

import matplotlib.pyplot as plt
plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')

#Here are the targets that I want to use 
#to plot horizontal lines above each bar...
targets = (6,6,8,6,9)

ind = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

Bars = plt.bar(ind, performance, align='center')
_ = plt.xticks(ind, people)

#if you want your hlines to align with the bars.
#i.e. start and end at the same x coordinates:

x_start = np.array([plt.getp(item, 'x') for item in Bars])
x_end   = x_start+[plt.getp(item, 'width') for item in Bars]

plt.hlines(targets, x_start, x_end)

在此输入图像描述

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

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