一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示
关于谁强谁若其实没必要多说,但是谁更厉害,操作性更强,今天用一个实例来证明:
- 如果数据量较少,在excel中可视化的操作带来的便捷性是绝对的占据优势的,
- 但是,如果数据量很大,我劝你不要费劲了,excel没有那个功能
- ecxel中一个无法解决的问题就是:X轴如果显示刻度就是出现看不清楚刻度,一大堆密密麻麻的数据,无法美化显示效果,
而我们想要的效果可是,简化显示的内容,间隔显示刻度可能就是一个很好的解决方案
这个方法我也找了很久了,今天分享给大家
在excel里面:
出现的问题主要有:
- 不能全部显示刻度标签
- 无法间隔显示刻度
导入今天的素材:
1 |
df = pd.read_csv("https://github.com/selva86/datasets/economics.csv") |
如果可以加载不进去,跳转:https://github.com/selva86/datasets/。自行下载
预览一下数据:
我们的数据源是1967年到2015年的经济数据,共574条,如果
第二步如果不对X轴进行设置,将574个标签刻度全部显示将会是怎样?
可以看到我们的X轴的刻度标签已经完全看不到了
而我们可能更想要的是简化版的刻度,比如按照年或者更精简的显示方式,只要大致能看出来时间就好
修改x轴间隔为12:
此时X轴的标签刻度已经减少了很多,但是仍旧没有达到想要的效果,如果我们将其旋转90度:
虽然勉强将显示效果略有提高,但是不便于观看,所以,还需要再继续将间隔拉大
将间隔设置为30后:已经达到了我们想要的效果
方法解析:
设置x轴的角度:rotation:ax1.tick_params(axis=’x’, rotation=0, labelsize=12)
设置显示间隔:
ax2.set_xticks(np.arange(0, len(x),30))
ax2.set_xticklabels(x[::30], rotation=90, fontdict={‘fontsize’:10})
思路其实很简单,你有574个数据,你只需要提供两个列表,一个是从0开始到573中的,另外一个就是需要显示的日期的,只要将两个数据的间隔设置为一致,你想怎么显示都可以啦
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
x = df['date'] y1 = df['psavert'] y2 = df['unemploy'] # Plot Line1 (Left Y Axis) fig, ax1 = plt.subplots(1,1,figsize=(30,9), dpi= 80) ax1.plot(x, y1, color='tab:red') # Plot Line2 (Right Y Axis) ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis ax2.plot(x, y2, color='tab:blue') # Decorations # ax1 (left Y axis) ax1.set_xlabel('Year', fontsize=20) ax1.tick_params(axis='x', rotation=0, labelsize=12) ax1.set_ylabel('Personal Savings Rate', color='tab:red', fontsize=20) ax1.tick_params(axis='y', rotation=0, labelcolor='tab:red' ) ax1.grid(alpha=.4) # ax2 (right Y axis) ax2.set_ylabel("# Unemployed (1000's)", color='tab:blue', fontsize=20) ax2.tick_params(axis='y', labelcolor='tab:blue') ax2.set_xticks(np.arange(0, len(x))) ax2.set_xticklabels(x[::], rotation=90, fontdict={'fontsize':10}) # ax2.set_xticks(np.arange(0, len(x), 60)) # ax2.set_xticklabels(x[::60], rotation=90, fontdict={'fontsize':10}) ax2.set_title("Personal Savings Rate vs Unemployed: Plotting in Secondary Y Axis", fontsize=22) fig.tight_layout() plt.show() |
一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示http://t.zijieimg.com/9MNK95/