如何将一条水平线添加到现有的绘图中?
当前回答
你是对的,我认为[0,len(xs)]把你弄糊涂了。您需要重用原始的x轴变量xs,并将其与另一个具有相同长度的numpy数组绘制在一起。
annual = np.arange(1,21,1)
l = np.array(value_list) # a list with 20 values
spl = UnivariateSpline(annual,l)
xs = np.linspace(1,21,200)
plt.plot(xs,spl(xs),'b')
#####horizontal line
horiz_line_data = np.array([40 for i in xrange(len(xs))])
plt.plot(xs, horiz_line_data, 'r--')
###########plt.plot([0,len(xs)],[40,40],'r--',lw=2)
pylab.ylim([0,200])
plt.show()
希望这能解决问题!
其他回答
你可以用plt。网格画一条水平线。
import numpy as np
from matplotlib import pyplot as plt
from scipy.interpolate import UnivariateSpline
from matplotlib.ticker import LinearLocator
# your data here
annual = np.arange(1,21,1)
l = np.random.random(20)
spl = UnivariateSpline(annual,l)
xs = np.linspace(1,21,200)
# plot your data
plt.plot(xs,spl(xs),'b')
# horizental line?
ax = plt.axes()
# three ticks:
ax.yaxis.set_major_locator(LinearLocator(3))
# plot grids only on y axis on major locations
plt.grid(True, which='major', axis='y')
# show
plt.show()
除了这里被点赞最多的答案外,人们还可以在熊猫的数据框架上调用plot后链接axhline。
import pandas as pd
(pd.DataFrame([1, 2, 3])
.plot(kind='bar', color='orange')
.axhline(y=1.5));
如果想在坐标轴上画一条水平线,也可以尝试ax.hlines()方法。您需要指定y位置以及数据坐标中的xmin和xmax(即x轴上的实际数据范围)。示例代码片段如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 21, 200)
y = np.exp(-x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.hlines(y=0.2, xmin=4, xmax=20, linewidth=2, color='r')
plt.show()
上面的代码片段将在y=0.2处的轴上绘制一条水平线。水平线从x=4开始,到x=20结束。生成的图像为:
对于那些总是忘记命令轴的人来说,下面是一个很好的和简单的方法
plt.plot(x, [y]*len(x))
在这里,xs = x y = 40。 如果len(x)很大,那么这种方法就很低效,你应该使用axhline。
使用axhline(水平轴线)。例如,这是一条y = 0.5处的水平线:
import matplotlib.pyplot as plt
plt.axhline(y=0.5, color='r', linestyle='-')
plt.show()
推荐文章
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块
- 蟒蛇导出环境文件
- Django - makemigrations -未检测到任何更改
- SQLAlchemy:引擎、连接和会话差异
- 在Python Pandas中删除多个列中的所有重复行
- 更改pandas DataFrame中的特定列名
- 将Pandas多索引转换为列
- 熊猫在每组中获得最高的n个记录
- 熊猫数据帧得到每组的第一行