仅在matplotlib中打印观测日期,跳过日期范围

仅在matplotlib中打印观测日期,跳过日期范围,matplotlib,Matplotlib,我在matplotlib中绘制了一个简单的数据框。然而,该图显示的是日期的范围,而不仅仅是两个观测数据点 如何只绘制两个数据点而不绘制日期范围 df结构: Date Number 2018-01-01 12:00:00 1 2018-02-01 12:00:00 2 import matplotlib.pyplot as plt fig, ax1 = plt.subplots( figsize=(4,5), dpi=72 )

我在
matplotlib
中绘制了一个简单的数据框。然而,该图显示的是日期的范围,而不仅仅是两个观测数据点

如何只绘制两个数据点而不绘制日期范围

df结构:

Date                  Number
2018-01-01 12:00:00   1  
2018-02-01 12:00:00   2
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(
    figsize=(4,5), 
    dpi=72
)

width = 0.75

#starts the bar chart creation
ax1.bar(df.index, df['Number'], 
        width, 
        align='center', 
        color=('#666666', '#333333'), 
        edgecolor='#FF0000',
        linewidth=2
       ) 
ax1.set_ylim(0,3)
ax1.set_ylabel('Score')

fig.autofmt_xdate()

#Title
plt.title('Scores by group and gender')

plt.tight_layout() 
plt.show()
matplotlib的输出
code:

这是我所期望的(这是使用字符串而不是x轴数据上的日期来完成的):

df代码:

import pandas as pd
df = pd.DataFrame([['2018-01-01 12:00:00', 1], ['2018-02-01 12:00:00',2]], columns=['Date', 'Number'])  
df['Date'] = pd.to_datetime(df['Date'])  
df.set_index(['Date'],inplace=True)  
绘图代码:

Date                  Number
2018-01-01 12:00:00   1  
2018-02-01 12:00:00   2
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots(
    figsize=(4,5), 
    dpi=72
)

width = 0.75

#starts the bar chart creation
ax1.bar(df.index, df['Number'], 
        width, 
        align='center', 
        color=('#666666', '#333333'), 
        edgecolor='#FF0000',
        linewidth=2
       ) 
ax1.set_ylim(0,3)
ax1.set_ylabel('Score')

fig.autofmt_xdate()

#Title
plt.title('Scores by group and gender')

plt.tight_layout() 
plt.show()

尝试添加以下内容:

import matplotlib.dates as mdates

myFmt = mdates.DateFormatter('%y-%m-%d')
ax1.xaxis.set_major_formatter(myFmt)
plt.xticks(df.index)

我认为在绘图时,日期被转换为大整数。所以
width=0.75
非常小,试试更大的(比如
width=20
):


Matplotlib条形图本质上是数字。如果您想要分类条形图,可以使用pandas条形图

df.plot.bar()
然后,您可能需要稍微美化一下标签

import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame([['2018-01-01 12:00:00', 1], ['2018-02-01 12:00:00',2]], columns=['Date', 'Number'])  
df['Date'] = pd.to_datetime(df['Date'])  
df.set_index(['Date'],inplace=True) 

ax = df.plot.bar()
ax.tick_params(axis="x", rotation=0)
ax.set_xticklabels([t.get_text().split()[0] for t in ax.get_xticklabels()])

plt.show()