光明网|啥?Python竟然也可以制作萌萌的手绘图表

本文转载自:微信公众号“程序员阿狗”
大家可能已经习惯了用Matplotlib和seaborn来制作不同的图表 , 但是今天要介绍一个非常酷的Python手绘风格的可视化包:cutecharts 。
光明网|啥?Python竟然也可以制作萌萌的手绘图表这个包可以用来生成以下几种看起来像手绘的图表 , 在某些场景下效果可能更好 。 这些可爱的图表还具有交互性和动态性 。 每当鼠标在图表上悬停时 , 数字就会显示出来 。 而要创建这种图表 , 你只需要几行Python代码 。
【光明网|啥?Python竟然也可以制作萌萌的手绘图表】目前 , 该库支持五种图表--条形图、线形图、饼图、雷达图和散点图 。 它还支持图表的组合 。
在开始绘制可爱的图表之前 , 我们需要安装 cutechart 库 。
$ pip install cutecharts
安装好后我们来尝试画下条形图和线图 。 首先创建下数据 , 以某个城市的温度数据为例 。
#import library and dataimport cutecharts.charts as ctcdf=pd.DataFrame({ ‘x’:[‘Sun.’,’Mon.’,’Tue.’,’Wed.’,’Thu.’,’Fri.’,’Sat.’], ‘y’:[14,15,17,20,22.3,23.7,24.8], ‘z’:[16,16.4,23.6,24.5,19.9,13.6,13.4]})
1
条形图
代码:
chart = ctc.Bar(‘Toronto Temperature’,width=’500px’,height=’400px’)chart.set_options( labels=list(df[‘x’]), x_label='Days', y_label='Temperature (Celsius)' , colors=[‘#1EAFAE’ for i in range(len(df))] )chart.add_series('This week',list(df[‘y’]))chart.render_notebook
效果:
光明网|啥?Python竟然也可以制作萌萌的手绘图表在这个条形图中 , 所有的条形图都有相同的颜色 。 如果你想自定义每个条形图的颜色 , 你只需要更改一行代码 。
chart = ctc.Bar(‘title’,width=’500px’,height=’400px’)chart.set_options( labels=list(df[‘x’]), x_label=”Days”, y_label=”Temperature (Celsius)” , colors=[‘#FFF1C9’,’#F7B7A3',’#EA5F89',’#9B3192',’#57167E’,’#47B39C’,’#00529B’] )chart.add_series(“This week”,list(df[‘y’]))chart.render_notebook
光明网|啥?Python竟然也可以制作萌萌的手绘图表2
线图
如果想观察时间序列数据的变动差异 , 线图无疑更直观 。
代码:
chart = ctc.Line(“Toronto Temperature”,width=’500px’,height=’400px’)chart.set_options( labels=list(df[‘x’]), x_label=”Days”, y_label=”Temperature (Celsius)” )chart.add_series(“This Week”, list(df[‘y’])) chart.add_series(“Last Week”, list(df[‘z’]))chart.render_notebook
光明网|啥?Python竟然也可以制作萌萌的手绘图表还有一个特别的功能:
当你把鼠标悬停在图表上时 , 图表会自动显示带有数字的标签 , 而且还画了一条虚线 , 这样本周和上周的气温差异就更加直观了 。
3
雷达图
要将线型图改为雷达图 , 你只需要将图表类型改为ctc.Radar 。
代码:
chart = ctc.Radar(‘Toronto Temperature’,width=’700px’,height=’600px’)chart.set_options( labels=list(df[‘x’]), is_show_legend=True, #by default, it is true. You can turn it off. legend_pos=’upRight’ #location of the legend )chart.add_series(‘This week’,list(df[‘y’]))chart.add_series(“Last week”,list(df[‘z’]))chart.render_notebook