<p>主要问题是<code>fg['date']</code>和<code>fg['fg_value']</code>目前是字符串(这就是<code>line.split(',')</code>产生的)。需要将它们转换为<code>datetime</code>和<code>float</code>类型,以便matplotlib对它们进行正确排序</p>
<p>例如,字符串日期的排序方式为<code>01-06</code>-><code>01-07</code>而适当的<code>datetime</code>日期被排序为<code>01-06</code>-><code>02-06</code></p>
<ol>
<li>转换日期<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html" rel="nofollow noreferrer">^{<cd11>}</a>和值<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.astype.html" rel="nofollow noreferrer">^{<cd12>}</a></李>
<li>使用<a href="https://matplotlib.org/stable/api/figure_api.html#matplotlib.figure.Figure.autofmt_xdate" rel="nofollow noreferrer">^{<cd13>}</a>将x记号设置为日期样式</李>
<li>如果希望<em>每</em>天有一个刻度标签,请使用<a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.axis.Axis.set_major_locator.html" rel="nofollow noreferrer">^{<cd14>}</a>调整间隔</李>
<li>如果希望日期显示为<code>25 Jul, 2021</code>而不是<code>25-07-2021</code>,请使用<a href="https://matplotlib.org/stable/api/_as_gen/matplotlib.axis.Axis.set_major_formatter.html" rel="nofollow noreferrer">^{<cd17>}</a></李>
</ol>
<p><a href="https://i.stack.imgur.com/l3eS1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/l3eS1.png" alt="figure output with formatted dates"/></a></p>
<pre class="lang-py prettyprint-override"><code>#1 - convert to datetime and float
fg['date'] = pd.to_datetime(fg['date'], dayfirst=True)
fg['fg_value'] = fg['fg_value'].astype(float)
plt.plot(fg['date'], fg['fg_value'], marker='.')
#2 - style tick labels as dates
plt.gcf().autofmt_xdate()
#3 - change tick interval to every day
import matplotlib.dates as mdates
loc = mdates.DayLocator(interval=1)
plt.gca().xaxis.set_major_locator(loc)
#4 - change tick format from 01-07-2021 to 01 Jul, 2021
fmt = mdates.DateFormatter('%d %b, %Y')
plt.gca().xaxis.set_major_formatter(fmt)
</code></pre>