【开发心得】Python+Matplotlib解决X 轴值不按数组排序(已解决)

Python+Matplotlib解决X 轴值不按数组排序最简单的办法

问题描述

看标题就知道了,先上个图给大家
错误的图形X轴
这个图对应的代码和数据如下,也是网上找到的最初的代码,根据自己的数据进行了略微改动,也是最简单的办法,让你会感觉plt的使用简直是太简单了。
原始数据

# 折线图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
#df = pd.read_excel('quanguojingji10nian.xls')
x=dfGraph['saleArea']
y1=dfGraph['personCount']
plt.plot(x,y1,label='面积与人数')

plt.xlabel('面积(平方米)')
plt.ylabel('90后人数')
plt.title('面积与人数')
plt.legend()
plt.show()

解决方案

上图中,问题在于X轴的数据顺序不对,原因是plt在显示数据的时候,自己按照顺序进行重新排序,结果造成“50-100”这个数值排到了最后,造成了图形很奇怪。有一个办法就是把X轴的数值定义按照ASCII的顺序,但是由于X轴数据是自动动态读取的,靠手工是不可靠的。
经过几度查询,找到以下这篇文章:
Python之Matplotlib 解决绘图 X 轴值不按数组排序问题

这篇文章写的还是不错,至少知道了思路,但是这篇文章有一点不明白,就是这句:

# 自定义 x轴 的取值:
plt.xticks(arange(len(colums_x)),colums_x)

用了以后语法始终报错,说没有定义,网上竟然没有找到类似的问题,难道是我的python版本问题吗?

复制害死人

有时候,复制粘贴的便利性造成了程序员的不动脑筋,上面说的那篇文章,在各个地方都能搜到,也不知道到底哪个网站的才是原创!问题关键是用的都是arange!
后来阴差阳错的把arange改成了range,语法竟然不报错了,立马测试了一下,大家先看一下效果:
错误图形Y轴

最终解决

看上图,终于解决了X轴排序的问题,但是为啥图形还是那么奇怪呢?聪明的读者大概猜到是什么问题了,上图图形对应的代码如下:

plt.xticks(range(len(x)),x)
plt.plot(x,y1,label='面积与人数')

结合之前那篇文章,问题一下子就找到了,是第二句的问题,最终正确的代码和图形如下:

plt.xticks(range(len(x)),x)
plt.plot(y1,label='面积与人数')

这下图形终于对了,又学到了新知识!
正确图形
多说一句,50-100平方米的购买人数果然多啊。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值