Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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轴上显示所有日期值(matplolib仅显示少数值),格式为MMM-YYYY 导入操作系统 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 导入日期时间 df=pd.read\u excel(数据目录+“/”+文件列表[0],索引col=“日期”) 测向头(5)_Python_Pandas_Matplotlib - Fatal编程技术网

Python 在x轴上显示所有日期值(matplolib仅显示少数值),格式为MMM-YYYY 导入操作系统 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 导入日期时间 df=pd.read\u excel(数据目录+“/”+文件列表[0],索引col=“日期”) 测向头(5)

Python 在x轴上显示所有日期值(matplolib仅显示少数值),格式为MMM-YYYY 导入操作系统 作为pd进口熊猫 将matplotlib.pyplot作为plt导入 导入日期时间 df=pd.read\u excel(数据目录+“/”+文件列表[0],索引col=“日期”) 测向头(5),python,pandas,matplotlib,Python,Pandas,Matplotlib,我得到下面的图表,需要在x轴上绘制每个月的所有日期值。 我想在x轴上显示所有月份和年份的对角线格式(2月19日)。我可以使绘图的大小更大,以适合所有人,因为我将它保存为jpg 我希望x轴具有以下值: 1月16日、2月16日、3月16日、4月16日、5月16日、6月16日、7月16日、8月16日、9月16日、10月16日、11月16日、12月16日、1月17日、2月17日… (我希望显示所有这些值,matplotlib会自动截断此值,我希望避免此情况)我建议您使用matplotlib而不是pand

我得到下面的图表,需要在x轴上绘制每个月的所有日期值。 我想在x轴上显示所有月份和年份的对角线格式(2月19日)。我可以使绘图的大小更大,以适合所有人,因为我将它保存为jpg

我希望x轴具有以下值: 1月16日、2月16日、3月16日、4月16日、5月16日、6月16日、7月16日、8月16日、9月16日、10月16日、11月16日、12月16日、1月17日、2月17日…
(我希望显示所有这些值,matplotlib会自动截断此值,我希望避免此情况)

我建议您使用matplotlib而不是pandas plot,并执行类似操作以指定的格式打印日期:

import matplotlib.dates as mdates

from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

myFmt = mdates.DateFormatter('%b-%Y') # date formatter for matplotlib
                                      # %b is Month abbreviated name, %Y is the Year

# ... after some code

fig, ax = plt.subplots(figsize=(15,8))

ax.xaxis.set_major_formatter(myFmt)
fig.autofmt_xdate()

# Plot data ...

ax.set_xticks("""... define how often to show the date""")
您可以使用以下命令从数据框中获取数据:
.to\u numpy()
.values()


请参阅此函数以了解
setxticks
函数。

仅使用pandas函数,就可以使用stftime()将日期架构索引“%Y-%m-%d”替换为新表单“%b-%Y”和绘图中的一些参数

xticks指定您绝对希望看到的标签


设置标签以修改标签列表。

如注释中所述,必须同时设置定位器和格式设置器。这在和的matplotlib文档中有很好的解释。另请参见对问题的解释。格式化代码是从Python的


示例输出:

您必须在matplotlib中设置正确的定位器和格式设置程序,才能获得所需的XTick。如果您仍然无法管理,请阅读并询问。通常,自定义标签涉及两个步骤:。如果你想更经常地使用它,你应该熟悉这些概念。这似乎不起作用,它只显示了所有年份的1月1日。我得到了你为格式化所做的实现,它非常好。但它仍然没有显示x轴中的所有值抱歉,我误读了您的请求。我更新了答案。我只是想格式化“天”,而不是“年”。谢谢,但这不是我的问题,我想你是无意中做了“天”而不是“年”。我面临的主要问题是在x轴上显示所有日期。我已经更新了问题,使之更加清楚。如果有点模棱两可,很抱歉。我还添加了set_xticks函数。试试看。我对格式没有那么大的问题。我面临的主要问题是在x轴上显示所有月份值。Pyplot会自动在x轴上显示一些值好的,我做了一个完整的修正,我想它现在可以工作了。
import matplotlib.dates as mdates

from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

myFmt = mdates.DateFormatter('%b-%Y') # date formatter for matplotlib
                                      # %b is Month abbreviated name, %Y is the Year

# ... after some code

fig, ax = plt.subplots(figsize=(15,8))

ax.xaxis.set_major_formatter(myFmt)
fig.autofmt_xdate()

# Plot data ...

ax.set_xticks("""... define how often to show the date""")
smoothdf.plot(xticks=smoothdf.index.strftime('%m-%Y').unique()).set_xticklabels(smoothdf.index.strftime('%b-%Y').unique())
from matplotlib import pyplot as plt
import pandas as pd
from matplotlib.dates import MonthLocator, DateFormatter


#fake data
import numpy as np
np.random.seed(123)
n = 100
df = pd.DataFrame({"Dates": pd.date_range("20180101", periods=n, freq="10d"), "A": np.random.randint(0, 100, size=n), "B": np.random.randint(0, 100, size=n),})
df.set_index("Dates", inplace=True)
print(df)

ax = df.plot()

#defines the tick location 
ax.xaxis.set_major_locator(MonthLocator())
#defines the label format
ax.xaxis.set_major_formatter(DateFormatter("%b-%y"))
ax.tick_params(axis="x", labelrotation= 90)

plt.tight_layout()
plt.show()