Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显示反转的垂直日期轴_Python_Matplotlib_Axis - Fatal编程技术网

Python 显示反转的垂直日期轴

Python 显示反转的垂直日期轴,python,matplotlib,axis,Python,Matplotlib,Axis,我试图制作的图表是一个二维数组,其垂直维度为日期。按照惯例,日期应从上到下递增。以另一种方式显示日期适用于以下代码: import numpy as np import matplotlib as mpl import matplotlib.colorbar as cb import matplotlib.pyplot as plt from datetime import datetime y = np.reshape(np.random.rand(100), (10, 10)) f1 =

我试图制作的图表是一个二维数组,其垂直维度为日期。按照惯例,日期应从上到下递增。以另一种方式显示日期适用于以下代码:

import numpy as np
import matplotlib as mpl
import matplotlib.colorbar as cb
import matplotlib.pyplot as plt
from datetime import datetime

y = np.reshape(np.random.rand(100), (10, 10))
f1 = plt.figure()
ax1 = f1.add_axes([0.15, 0.15, 0.76, 0.80])
mindate = mpl.dates.date2num(datetime(2010, 1, 10))
maxdate = mpl.dates.date2num(datetime(2010, 1, 20))
im1 = ax1.imshow(y, cmap='binary', aspect='auto', origin='upper',
                 interpolation='nearest', extent=(0, 1, mindate, maxdate))
ax1.yaxis_date()
plt.show()

对于其他数据类型,通过切换间隔边界反转轴的方向非常简单,但对于日期,这将导致Y轴为空。有没有一种方法可以在不编写自定义记号定位器的情况下使其正常工作?

反转日期时间轴会删除记号定位器和格式设置,这太糟糕了。我能想到的最简单的事情就是手动重新设置它们。这里有一个链接到。这里有到的链接。您也可以使用
AutoDateFormatter

代码如下:

import numpy as np
import matplotlib as mpl
import matplotlib.colorbar as cb
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib import dates

y = np.reshape(np.random.rand(100), (10, 10))
f1 = plt.figure()
ax1 = f1.add_axes([0.15, 0.15, 0.76, 0.80])
mindate = mpl.dates.date2num(datetime(2010, 1, 10))
maxdate = mpl.dates.date2num(datetime(2010, 1, 20))
im1 = ax1.imshow(
    y, cmap='binary', aspect='auto',
    origin='upper', interpolation='nearest',
    extent=(0, 1, mindate, maxdate))

ax1.yaxis_date()

ax1.invert_yaxis()
hfmt = dates.DateFormatter('%b %d %Y')
ax1.yaxis.set_major_locator(dates.DayLocator(interval=1))
ax1.yaxis.set_major_formatter(hfmt)

plt.show()

它会产生这样的结果:

反转日期时间轴会删除ticklocator和格式设置,这太糟糕了。我能想到的最简单的事情就是手动重新设置它们。这里有一个链接到。这里有到的链接。您也可以使用
AutoDateFormatter

代码如下:

import numpy as np
import matplotlib as mpl
import matplotlib.colorbar as cb
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib import dates

y = np.reshape(np.random.rand(100), (10, 10))
f1 = plt.figure()
ax1 = f1.add_axes([0.15, 0.15, 0.76, 0.80])
mindate = mpl.dates.date2num(datetime(2010, 1, 10))
maxdate = mpl.dates.date2num(datetime(2010, 1, 20))
im1 = ax1.imshow(
    y, cmap='binary', aspect='auto',
    origin='upper', interpolation='nearest',
    extent=(0, 1, mindate, maxdate))

ax1.yaxis_date()

ax1.invert_yaxis()
hfmt = dates.DateFormatter('%b %d %Y')
ax1.yaxis.set_major_locator(dates.DayLocator(interval=1))
ax1.yaxis.set_major_formatter(hfmt)

plt.show()
它产生了以下结果: