gpt4 book ai didi

python - 如何从 matplotlib 图中删除微秒?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:56 25 4
gpt4 key购买 nike

我已经完成了 pylab 示例和许多轴格式问题,但我仍然无法从下图中的 x 轴上删除微秒。

尝试更改轴/刻度属性及其输出之前的原始代码。

enter image description here

#filenames to be read in
file0 = 'results'


#Get data from file strore in record array
def readIn(fileName):
temp = DataClass()
with open('%s.csv' % fileName) as csvfile:
temp = mlab.csv2rec(csvfile,names = ['date', 'band','lat'])
return temp

#plotting function(position number, x-axis data, y-axis data,
# filename,data type, units, y axis scale)
def iPlot(num,xaxi,yaxi,filename,types, units,scale):
plt.subplot(2,1,num)
plt.plot_date(xaxi,yaxi,'-')
plt.title(filename + "--%s" % types )
plt.ylabel(" %s %s " % (types,units))
plt.ylim(0,scale)
plt.xticks(rotation=20)



# Set plot Parameters and call plot funciton
def plot():
nameB = "Bandwidth"
nameL = "Latency"
unitsB = " (Mbps)"
unitsL = "(ms)"
scaleB = 30
scaleL = 500

iPlot(1,out0['date'],out0['lat'],file0,nameL,unitsL,scaleL)
iPlot(2,out0['date'],out0['band'],file0,nameB,unitsB,scaleB)

def main():
global out0
print "Creating plots..."

out0 = readIn(file0)
plot()

plt.show()

main()

我的尝试是通过添加以下内容来更改上面的代码:

months   = date.MonthLocator()  # every month
days = date.DayLocator()
hours = date.HourLocator()
minutes = date.MinuteLocator()
seconds = date.SecondLocator()


def iPlot(num,xaxi,yaxi,filename,types, units,scale):
plt.subplot(2,1,num)
plt.plot_date(xaxi,yaxi,'-')
plt.title(filename + "--%s" % types )
plt.ylabel(" %s %s " % (types,units))
plt.ylim(0,scale)

# Set Locators
ax.xaxis.set_major_locator(days)
ax.xaxis.set_minor_locator(hours)

majorFormatter = date.DateFormatter('%M-%D %H:%M:%S')
ax.xaxis.set_major_formatter(majorFormatter)
ax.autoscale_view()

我正在设置的主要格式化程序是否被默认覆盖?有没有办法只关闭微秒而不影响其他格式?我不太清楚微秒从何而来,因为我的数据中没有微秒。

最佳答案

你的代码有几个问题。首先,它不起作用(我的意思是即使我制作了所有模拟样本数据它也不起作用)。其次,这并不是一个真正展示错误的最小工作示例,我无法弄清楚你的 date 是什么,我想是 matplotlib.dates?第三,我看不到你的情节(你的完整标签也有 '%M-%D 部分)

现在我遇到的问题是,我不知道你是怎么通过 ('%M-%D %H:%M:%S') 的这会以我的方式抛出不正确的语法。 (Python2.6.6 和 3.4 上的 Matplotlib 1.3.1 Win7)。我看不到你的 ax 是什么,或者你的数据是什么样子的,当涉及到像这样的东西时,所有这些都会有问题。即使时间跨度过大也会导致滴答声“溢出”(尤其是当您尝试将小时定位器放在年份范围内时,即我认为会在 7200 滴答声处抛出错误?)

同时,这是我的最小工作示例,它显示的行为与您的不同。

import matplotlib as mpl
import matplotlib.pyplot as plt
import datetime as dt

days = mpl.dates.DayLocator()
hours = mpl.dates.HourLocator()


x = []
for i in range(1, 30):
x.append(dt.datetime(year=2000, month=1, day=i,
hour=int(i/3), minute=i, second=i))
y = []
for i in range(len(x)):
y.append(i)

fig, ax = plt.subplots()
plt.xticks(rotation=45)
ax.plot_date(x, y, "-")

ax.xaxis.set_major_locator(days)
ax.xaxis.set_minor_locator(hours)

majorFormatter = mpl.dates.DateFormatter('%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(majorFormatter)
ax.autoscale_view()

plt.show()

enter image description here

(这一切可能不应该是一个答案,也许它会帮助你,但它太长而不是评论)。

关于python - 如何从 matplotlib 图中删除微秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866530/

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