gpt4 book ai didi

python - y 轴的最小值未应用于 matplotlib vlines 图中

转载 作者:太空狗 更新时间:2023-10-29 17:41:37 24 4
gpt4 key购买 nike

我正在 matplotlib 中绘制 vlines 图,我在数据集中的所有 y 值都为 >=0。我希望我的 y 轴最底部的刻度为 0,但我得到的是 -500。

代码如下:

#!/usr/bin/env python

import numpy as np
from matplotlib import pyplot as plt, dates as mdates
import datetime as dt, time

# Read the data and turn it into a numpy array
#store = map(lambda line: map(int, line.strip().split()), open(name + '.txt').readlines())
store = [
[1293606162197, 0, 0],
[1293605477994, 63, 0],
[1293605478057, 0, 0],
[1293605478072, 2735, 1249],
[1293606162213, 0, 0],
[1293606162229, 0, 0],
]

nstore = np.array(store)

# Get arrays of each columns in the store array
d = nstore[:,0]
y1 = nstore[:,1]
y2 = nstore[:,2]

# Get arrays of values to be passed to matplotlib
s = d / 1000
dts = map(dt.datetime.fromtimestamp, s)
fds = mdates.date2num(dts)

# new figure and subplot
fig = plt.figure()
ax = fig.add_subplot(111)

# Plot using vlines
ax.vlines(fds, [0], y1, 'red')

# set xaxis tick settings
ax.xaxis.set_major_locator(mdates.MinuteLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d %H:%M'))

for label in ax.xaxis.get_ticklabels():
label.set_rotation('vertical')

fig.subplots_adjust(bottom=.25)

# Set the y axis bottom limit to 0
ax.set_ylim(bottom=0) # <<- THIS DOES NOT SEEM TO BE WORKING

# Save the plot figure
fig.savefig('out.png')

这是我得到的情节: enter image description here

谁能指出我做错了什么?另外,如果您能指出包含我需要的详细信息的文档,那就太好了。谢谢。

问题是 Creating graph with date and time in axis labels with matplotlib 的跟进

最佳答案

您可以在绘制数据后手动设置限制,如下所示:

pyplot.ylim(ymin=0)

发生的事情是 Matplotlib 调整绘图限制,使其看起来“最佳”。有时,这意味着超出数据的严格范围。然后,您必须在绘图之后更新限制,因为每个绘图都会更新限制(如果我理解正确的话)。

现在,您的方法可以工作,但您必须在设置限制后更新数字:

ax.set_ylim(bottom=0)
pylot.draw()

(这适用于 Mac OS X 上的 IPython shell 和最新版本的 matplotlib。)

关于python - y 轴的最小值未应用于 matplotlib vlines 图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5548121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com