首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib中的日期刻度和旋转

matplotlib中的日期刻度和旋转
EN

Stack Overflow用户
提问于 2012-06-29 23:22:19
回答 4查看 297.5K关注 0票数 210

我在matplotlib中轮换我的日期记号时遇到了一个问题。下面是一个小的示例程序。如果我尝试旋转末尾的刻度,刻度不会旋转。如果我试图像注释“crashes”下所示那样旋转刻度,那么matplot lib就会崩溃。

只有当x值是日期时,才会发生这种情况。如果我在对avail_plot的调用中将变量dates替换为变量t,那么xticks(rotation=70)调用在avail_plot中就可以正常工作。

有什么想法吗?

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt

def avail_plot(ax, x, y, label, lcolor):
    ax.plot(x,y,'b')
    ax.set_ylabel(label, rotation='horizontal', color=lcolor)
    ax.get_yaxis().set_ticks([])

    #crashes
    #plt.xticks(rotation=70)

    ax2 = ax.twinx()
    ax2.plot(x, [1 for a in y], 'b')
    ax2.get_yaxis().set_ticks([])
    ax2.set_ylabel('testing')

f, axs = plt.subplots(2, sharex=True, sharey=True)
t = np.arange(0.01, 5, 1)
s1 = np.exp(t)
start = dt.datetime.now()
dates=[]
for val in t:
    next_val = start + dt.timedelta(0,val)
    dates.append(next_val)
    start = next_val

avail_plot(axs[0], dates, s1, 'testing', 'green')
avail_plot(axs[1], dates, s1, 'testing2', 'red')
plt.subplots_adjust(hspace=0, bottom=0.3)
plt.yticks([0.5,],("",""))
#doesn't crash, but does not rotate the xticks
#plt.xticks(rotation=70)
plt.show()
EN

回答 4

Stack Overflow用户

发布于 2017-03-19 23:25:39

避免在ticklabes上循环的一个简单的解决方案是直接使用

fig.autofmt_xdate()

此命令自动旋转X轴标签并调整其位置。默认值为旋转角度30°和水平对齐“右”。但它们可以在函数调用中更改

代码语言:javascript
运行
复制
fig.autofmt_xdate(bottom=0.2, rotation=30, ha='right')

附加的bottom参数等同于设置plt.subplots_adjust(bottom=bottom),后者允许将底轴填充设置为更大的值,以承载旋转的记号标签。

所以基本上在这里,你需要的所有设置,你需要在一个命令中有一个漂亮的日期轴。

可以在matplotlib页面上找到good example

票数 51
EN

Stack Overflow用户

发布于 2017-01-27 04:39:50

horizontalalignmentrotation应用于每个刻度标签的另一种方法是在要更改的刻度标签上执行for循环:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt

now = dt.datetime.now()
hours = [now + dt.timedelta(minutes=x) for x in range(0,24*60,10)]
days = [now + dt.timedelta(days=x) for x in np.arange(0,30,1/4.)]
hours_value = np.random.random(len(hours))
days_value = np.random.random(len(days))

fig, axs = plt.subplots(2)
fig.subplots_adjust(hspace=0.75)
axs[0].plot(hours,hours_value)
axs[1].plot(days,days_value)

for label in axs[0].get_xmajorticklabels() + axs[1].get_xmajorticklabels():
    label.set_rotation(30)
    label.set_horizontalalignment("right")

下面是一个示例,如果您想要控制主刻度和次刻度的位置:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt

fig, axs = plt.subplots(2)
fig.subplots_adjust(hspace=0.75)
now = dt.datetime.now()
hours = [now + dt.timedelta(minutes=x) for x in range(0,24*60,10)]
days = [now + dt.timedelta(days=x) for x in np.arange(0,30,1/4.)]

axs[0].plot(hours,np.random.random(len(hours)))
x_major_lct = mpl.dates.AutoDateLocator(minticks=2,maxticks=10, interval_multiples=True)
x_minor_lct = matplotlib.dates.HourLocator(byhour = range(0,25,1))
x_fmt = matplotlib.dates.AutoDateFormatter(x_major_lct)
axs[0].xaxis.set_major_locator(x_major_lct)
axs[0].xaxis.set_minor_locator(x_minor_lct)
axs[0].xaxis.set_major_formatter(x_fmt)
axs[0].set_xlabel("minor ticks set to every hour, major ticks start with 00:00")

axs[1].plot(days,np.random.random(len(days)))
x_major_lct = mpl.dates.AutoDateLocator(minticks=2,maxticks=10, interval_multiples=True)
x_minor_lct = matplotlib.dates.DayLocator(bymonthday = range(0,32,1))
x_fmt = matplotlib.dates.AutoDateFormatter(x_major_lct)
axs[1].xaxis.set_major_locator(x_major_lct)
axs[1].xaxis.set_minor_locator(x_minor_lct)
axs[1].xaxis.set_major_formatter(x_fmt)
axs[1].set_xlabel("minor ticks set to every day, major ticks show first day of month")
for label in axs[0].get_xmajorticklabels() + axs[1].get_xmajorticklabels():
    label.set_rotation(30)
    label.set_horizontalalignment("right")

票数 21
EN

Stack Overflow用户

发布于 2020-05-18 22:52:27

只需使用

代码语言:javascript
运行
复制
ax.set_xticklabels(label_list, rotation=45)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11264521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档