我在matplotlib
中绘制了一个简单的数据框。但是,该图显示的是日期范围,而不仅仅是两个观察到的数据点。
如何仅绘制两个数据点而不绘制日期范围?
df结构:
Date Number
2018-01-01 12:00:00 1
2018-02-01 12:00:00 2
matplotlib
代码的输出:
这是我所期望的(这是使用字符串而不是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)
地块代码:
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()
答案 0 :(得分:0)
尝试添加以下内容:
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
:
答案 1 :(得分:0)
Matplotlib条形图本质上是数字。如果您要使用分类条形图,则可以使用熊猫条形图。
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()