在 matplotlib 中,当你的 y 轴值以意外的、无序的形式出现时,很可能由于这些值的数据类型。通常,它们被绘制为字符串而不是数字。
要纠正此问题,请通过在列表理解期间显式转换 y 轴数据将它们转换为浮点数:
<code class="python">Solar = [float(line[1]) for line in I020]</code>
超越数据转换,还建议在处理日期和时间时使用 matplotlib 的 x 轴自动格式化功能。此功能会自动调整标签旋转和其他方面,以增强图形的可读性:
<code class="python">plt.gcf().autofmt_xdate()</code>
出于说明目的,让我们修改提供的代码:
<code class="python">I020 = [line.strip('\n').split(",") for line in open('PV5sdata1.csv')][1:] Time = [datetime.datetime.strptime(line[0], "%H%M%S%f") for line in I020] Time1 = [mdates.date2num(line) for line in Time] Solar = [float(line[1]) for line in I020] fig, ax = plt.subplots() ax.set_title('Solar data') ax.set_xlabel('Time') ax.set_ylabel('Solar') ax.plot_date(Time1, Solar, 'k-') hfmt = mdates.DateFormatter('%H:%M:%S') ax.xaxis.set_major_formatter(hfmt) plt.gcf().autofmt_xdate() plt.show()</code>
在此修改后的代码中,我们声明图形和轴作为单独的对象(fig、ax)。这种方法在自定义绘图属性时提供了更多的控制和灵活性。
生成的图形显示有序的 y 轴值和改进的 x 轴标签:
[有序 y 轴和改进的 x 轴标签]
以上是为什么 Matplotlib Y 轴值没有排序?的详细内容。更多信息请关注PHP中文网其他相关文章!