一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

关于谁强谁若其实没必要多说,但是谁更厉害,操作性更强,今天用一个实例来证明:

  • 如果数据量较少,在excel中可视化的操作带来的便捷性是绝对的占据优势的,
  • 但是,如果数据量很大,我劝你不要费劲了,excel没有那个功能
  • ecxel中一个无法解决的问题就是:X轴如果显示刻度就是出现看不清楚刻度,一大堆密密麻麻的数据,无法美化显示效果,

而我们想要的效果可是,简化显示的内容,间隔显示刻度可能就是一个很好的解决方案

这个方法我也找了很久了,今天分享给大家

在excel里面:

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

出现的问题主要有:

  • 不能全部显示刻度标签
  • 无法间隔显示刻度

导入今天的素材:

df = pd.read_csv("https://github.com/selva86/datasets/economics.csv")

如果可以加载不进去,跳转:https://github.com/selva86/datasets/。自行下载

预览一下数据:

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

我们的数据源是1967年到2015年的经济数据,共574条,如果

第二步如果不对X轴进行设置,将574个标签刻度全部显示将会是怎样?

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

可以看到我们的X轴的刻度标签已经完全看不到了

而我们可能更想要的是简化版的刻度,比如按照年或者更精简的显示方式,只要大致能看出来时间就好

修改x轴间隔为12:

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

此时X轴的标签刻度已经减少了很多,但是仍旧没有达到想要的效果,如果我们将其旋转90度:

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

虽然勉强将显示效果略有提高,但是不便于观看,所以,还需要再继续将间隔拉大

将间隔设置为30后:已经达到了我们想要的效果

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

方法解析:

一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示

设置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中的,另外一个就是需要显示的日期的,只要将两个数据的间隔设置为一致,你想怎么显示都可以啦

源代码:

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()


分享到:


相關文章: