所以我确实有一个简单的问题。我有一个模拟商店生活周/月的程序。现在它需要处理cashdesks(我不知道我是否从我的语言中正确地翻译了那个),因为它们有时会失败,而且有些专家必须到商店去修理它们。在模拟结束时,程序绘制一个如下图:
当cashdesk出现一些错误/损坏时会发生1.0
状态,然后它等待技术人员修复它,然后它回到工作状态0
。
我或者说我的项目人更愿意在x
轴上看到除了分钟以外的其他内容。我该怎么做?我的意思是,我希望它像Day 1
,然后是间隔,Day 2
等。
我知道pyplot.xticks()
方法,但它将标签分配给第一个参数列表中的刻度,所以我必须制作2000个标签,分钟,我只想要7个,写上了几天。
答案 0 :(得分:1)
你可以使用ax的matplotlib set_ticks和get_xticklabels()方法,灵感来自this和this个问题。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
minutes_in_day = 24 * 60
test = pd.Series(np.random.binomial(1, 0.002, 7 * minutes_in_day))
fig, ax = plt.subplots(1)
test.plot(ax = ax)
start, end = ax.get_xlim()
ax.xaxis.set_ticks(np.arange(start, end, minutes_in_day))
labels = ['Day\n %d'%(int(item.get_text())/minutes_in_day+ 1) for item in ax.get_xticklabels()]
ax.set_xticklabels(labels)
我得到的结果如下图所示。
答案 1 :(得分:1)
您与plt.xticks()
走在正确的轨道上。试试这个:
import matplotlib.pyplot as plt
# Generate dummy data
x_minutes = range(1, 2001)
y = [i*2 for i in x_minutes]
# Convert minutes to days
x_days = [i/1440.0 for i in x_minutes]
# Plot the data over the newly created days list
plt.plot(x_days, y)
# Create labels using some string formatting
labels = ['Day %d' % (item) for item in range(int(min(x_days)), int(max(x_days)+1))]
# Set the tick strings
plt.xticks(range(len(labels)), labels)
# Show the plot
plt.show()