Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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 调整X轴上的日期并固定MatplotLib中的图例_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python 调整X轴上的日期并固定MatplotLib中的图例

Python 调整X轴上的日期并固定MatplotLib中的图例,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我想知道如何在这里调整我的日期,使它们更小,更适合输出。我尝试过旋转,但它们似乎只是漫无目的地漂浮在图表下方。另外,我想让图例在不与我的图表重叠的地方有一次y_pred和y_test 这些子批次是通过循环添加的,循环的数量并不总是相同的。 作为参考,no_split将确定通过TimeSeriesSplit方法运行的循环数。我删除了很多不相关的代码,所以更容易理解 这是我的密码: fig = plt.figure() tscv = TimeSeriesSplit(n_splits=self

我想知道如何在这里调整我的日期,使它们更小,更适合输出。我尝试过旋转,但它们似乎只是漫无目的地漂浮在图表下方。另外,我想让图例在不与我的图表重叠的地方有一次
y_pred
y_test

这些子批次是通过循环添加的,循环的数量并不总是相同的。 作为参考,no_split将确定通过
TimeSeriesSplit
方法运行的循环数。我删除了很多不相关的代码,所以更容易理解

这是我的密码:

fig = plt.figure()
    tscv = TimeSeriesSplit(n_splits=self.no_splits)
    for train_index, test_index in tqdm(tscv.split(X)):
        X_train, X_test = X.iloc[train_index], X.iloc[test_index]
        y_train, y_test = y.iloc[train_index], y.iloc[test_index]

        # predict y values
        y_pred = self.regressor.predict(X_test)


        # plot y_pred vs y_test
        y_df = pd.DataFrame(index= X_test_index)
        y_pred = y_pred.reshape(len(y_pred), )
        y_test = y_test.reshape(len(y_test), )
        y_df['y_pred'] = y_pred
        y_df['y_test'] = y_test

        ax = fig.add_subplot(int(sqrt(self.no_splits)), int(sqrt(self.no_splits)+1), i)


        y_df.plot(title = 'Split{}'.format(i), ax=ax, legend=False)
        ax.tick_params(axis='x', rotation=45)

        plt.figlegend()
    plt.subplots_adjust(wspace=0, hspace=0)
    plt.show()


关于日期标签:您可以在旋转命令中指定记号对齐方式,如中所示

要缩小标签,有两个选项:

选项A:导入
matplotlib.dates
,以访问并选择可产生较小标签的格式。(例如省略年份或某事)。然后还可以使用定位器以不同的方式分隔标签

选项B:使用
rc_参数
勾选_参数
来定义字体大小、系列等。应该可以开始了

正如你所看到的,应该有一个在线材料ot让你去

关于图例的信息

可以使用
plt.plot(x,y,label=''nolabel')
将绘图设置为没有图例条目。例如,您可以将其与for循环相结合,以便仅在第一次迭代时绘制标签

枚举(TQM(tscv.split(X))中i(训练索引、测试索引)的

如果i==0:
plt.绘图(x,y,label=label)
其他:
plt.plot(x,y,label=''u nolabel')

plt.show()
之前使用
plt.tight\u layout()
并注释掉
plt.subplot\u adjust(wspace=0,hspace=0)
?这样可以缩小图表以适应日期-我想缩小日期以适应图表,也许可以让日期与哈希标记更好地对齐?“缩小日期以适应图表”意味着使用2左右的字体大小,这将是不可读的。您确定不希望子地块之间有更多空间吗?我刚刚进行了编辑,以显示在使用更多图表的紧密布局时会发生什么。我希望有更多空间,但不会以牺牲图表为代价