如何在 2 个地块的水平线上显示年份数据?
How to show the Year data in the horizontal lines of 2 plots?
我对情节有疑问。我有一个名为 log_return_data 的数据框。
这是数据框的快照:
我想在 1 个地块和相应的时间(在索引列中)中绘制每个 returns 的 3 个地块。
这是我写的代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fig1, axis = plt.subplots(3,1,figsize=(9,6),dpi=100)
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, sharex=True, linewidth=0.6)
log_return_data['MSFT_Returns'][1377:].plot(ax=axis[1], title='MSFT', fontsize=8,sharex=True, linewidth=0.6)
log_return_data['INTC_Returns'][1377:].plot(ax=axis[2], title='INTC', fontsize=8,sharex=True, linewidth=0.6)
plt.savefig('returns')
这是结果:
但是,我希望年份数据不仅在最后一个图中(INTC 数据)而且在 HPQ 和 MSFT(前 2 个图)中。
无论如何解决这个问题?
谢谢。
##编辑:
在第一个回答者的帮助下,我将代码更改为:
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, linewidth=0.6)
这是结果:
如何删除每个情节 x-axis 中的 3 个标题 'Date'?
由于所有三个图的时间索引相同,您可以在所有三个 plot
调用中使用 sharex=False
(这是默认设置)并且您应该获得所有 xticks 并且仍然有图表正确对齐:
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, sharex=False, linewidth=0.6)
log_return_data['MSFT_Returns'][1377:].plot(ax=axis[1], title='MSFT', fontsize=8,sharex=False, linewidth=0.6)
log_return_data['INTC_Returns'][1377:].plot(ax=axis[2], title='INTC', fontsize=8,sharex=False, linewidth=0.6)
sharex=True
当您有不同时间索引的不同系列不完全对齐时,会生成不同的绘图对齐方式,但这不是您的情况。
评论后编辑:
由于现在标题与轴标签和轴刻度标签重叠,您可以在 plt.savefig()
之前尝试以下操作:
# This removes the 'Date' label from every axis except the last.
for ax in axis[:-1]:
ax.set_xlabel('')
# This rearranges the layout (the title still would overlap with the tick labels).
plt.tight_layout()
我对情节有疑问。我有一个名为 log_return_data 的数据框。 这是数据框的快照:
我想在 1 个地块和相应的时间(在索引列中)中绘制每个 returns 的 3 个地块。 这是我写的代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
fig1, axis = plt.subplots(3,1,figsize=(9,6),dpi=100)
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, sharex=True, linewidth=0.6)
log_return_data['MSFT_Returns'][1377:].plot(ax=axis[1], title='MSFT', fontsize=8,sharex=True, linewidth=0.6)
log_return_data['INTC_Returns'][1377:].plot(ax=axis[2], title='INTC', fontsize=8,sharex=True, linewidth=0.6)
plt.savefig('returns')
这是结果:
但是,我希望年份数据不仅在最后一个图中(INTC 数据)而且在 HPQ 和 MSFT(前 2 个图)中。 无论如何解决这个问题? 谢谢。
##编辑: 在第一个回答者的帮助下,我将代码更改为:
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, linewidth=0.6)
这是结果:
如何删除每个情节 x-axis 中的 3 个标题 'Date'?
由于所有三个图的时间索引相同,您可以在所有三个 plot
调用中使用 sharex=False
(这是默认设置)并且您应该获得所有 xticks 并且仍然有图表正确对齐:
log_return_data['HPQ_Returns'][1377:].plot(ax=axis[0], title='HPQ', fontsize=8, sharex=False, linewidth=0.6)
log_return_data['MSFT_Returns'][1377:].plot(ax=axis[1], title='MSFT', fontsize=8,sharex=False, linewidth=0.6)
log_return_data['INTC_Returns'][1377:].plot(ax=axis[2], title='INTC', fontsize=8,sharex=False, linewidth=0.6)
sharex=True
当您有不同时间索引的不同系列不完全对齐时,会生成不同的绘图对齐方式,但这不是您的情况。
评论后编辑:
由于现在标题与轴标签和轴刻度标签重叠,您可以在 plt.savefig()
之前尝试以下操作:
# This removes the 'Date' label from every axis except the last.
for ax in axis[:-1]:
ax.set_xlabel('')
# This rearranges the layout (the title still would overlap with the tick labels).
plt.tight_layout()