You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Matplotlib绘制城市高低温图时Y轴数值混乱问题

问题:Matplotlib绘制城市高低温图表时Y轴数值混乱

尝试绘制阿拉巴马州2016年1月10日各城市的高低温图表,发现Y轴数值无序跳跃,无法按正常递增顺序排列,数据点未沿正确轴分布。

实现代码

fig, al = plt.subplots()
al.scatter(al_cities, al_min)
al.scatter(al_cities, al_max, c='red')
al.plot(al_cities, al_min, c='lightblue')
al.plot(al_cities, al_max, c='orange')
al.fill_between(al_cities, al_max, al_min, facecolor='gray', alpha=.3)
al.set_title('Highs and Lows in Alabama on January 10, 2016', fontsize=18)
al.set_xlabel('City', fontsize=14)
al.set_ylabel('Temperature', fontsize=14)

问题现象

生成的图表中Y轴数值无序跳跃,未按数值大小递增排列。

解决方法

核心原因

al_min和al_max为字符串类型,而非数值类型(整数/浮点数)。Matplotlib会将字符串当作分类数据处理,导致Y轴按字符串字典序排序,而非数值大小排序。

具体修复步骤

  • 转换温度数据为数值类型
    直接将列表中的字符串转为浮点数(或整数,根据数据格式调整):
    al_min = [float(temp) for temp in al_min]
    al_max = [float(temp) for temp in al_max]
    
  • 读取数据时指定类型(若从文件读取)
    如果数据来自CSV/Excel,用pandas读取时直接指定温度列的数值类型,避免后续转换:
    import pandas as pd
    # 假设数据列名为min_temp和max_temp
    df = pd.read_csv('your_data_source.csv', dtype={'min_temp': float, 'max_temp': float})
    al_min = df['min_temp'].tolist()
    al_max = df['max_temp'].tolist()
    
  • 重新运行绘图代码,Y轴即可按数值大小正常递增显示。

内容的提问来源于stack exchange,提问作者Mako3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:30:49