将xaxis记号标签格式化为接缝,如默认的p

2024-09-27 23:15:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将plot xticks设置为类似于pandas数据帧的默认格式。你知道吗

我试着用plt.set\ xticklabels公司但没有成功。你知道吗

fig, axarr = plt.subplots(len(stations), 2, figsize=(10,11))
plt.subplots_adjust(bottom=0.05)
hPc3.plot(use_index=True, subplots=True, ax=axarr[0:len(stations),0], 
for i in range(0,len(axarr)):
    axarr[i,0].set_ylabel('$nT$')
axarr[len(stations)-1,0].set_xlabel('$(UT)$')
for i in range(0,len(axarr)):
    plot4 = axarr[i,1].pcolormesh(tti, wPc3_period[i], np.log10(abs(wPc3_power[i])), cmap = 'jet')
    axarr[i,1].set_yscale('log', basey=2, subsy=None)
    axarr[i,1].set_xlabel('$(UT)$')
    axarr[i,1].set_ylabel('$Period$ $(s)$')
    axarr[i,1].set_ylim([np.min(wPc3_period[i]), np.max(wPc3_period[i])])
    axarr[i,1].invert_yaxis()
    axarr[i,1].plot(tti, te_coi3, 'w')
    cbar_coord = replace_at_index1(make_axes_locatable(axarr[i,1]).get_position(), [0,2], [0.92, 0.01])
    cbar_ax = fig.add_axes(cbar_coord)
    cbar = plt.colorbar(plot4, cax=cbar_ax,  boundaries=np.linspace(-10, 10, 512),
                    ticks=[-10, -5, 0, 5, 10], label='$log_{2}$')
    cbar.set_clim([-10,5])

左侧面板显示数据框绘图的默认标签。右边的面板是我的形成过程

the left panel show the default label of pandas data frame plot. The right panel is how is my formatation


Tags: 数据truelenplotnpfigpltax
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:44

Matplotlibdatesapi提供了大量方便的函数和类来表示和转换日期和时间数据。你知道吗

您可以使用DateFormatterDayLocatorHourLocator的简单组合来复制pandas样式。下面是一个虚拟数据集的例子,假设您没有提供完整的工作代码,但要适应您的用例应该不难。你知道吗

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# create toy dataset
index = pd.date_range("2018-05-25 00:00:00", "2018-05-26 00:00:00", freq = "1min")
series = pd.Series(np.random.random(len(index)), index=index)
x = index.to_pydatetime()
y = series

# plot
fig = plt.figure(figsize=(5,1))
ax = fig.gca()

ax.xaxis.set_minor_formatter(mdates.DateFormatter("%H:%M"))
ax.xaxis.set_minor_locator(mdates.HourLocator(interval=3))
ax.tick_params(which='minor', labelrotation=30)

ax.xaxis.set_major_formatter(mdates.DateFormatter("%d-%b"))
ax.xaxis.set_major_locator(mdates.DayLocator())
ax.tick_params(which='major', pad=10, labelrotation=30)

ax.set_xlim(x.min(), x.max())

ax.plot(x, y)
plt.show()

enter image description here

相关问题 更多 >

    热门问题