R语言在数据可视化上具有较强的优势,为了弥补Python在数据可视化上的不足,plotnine库实现了R语言中的“ggplot2”语法在Python上的移植。在Python环境下,可以画出R语言下的效果图。在使用plotnine库之前,先通过以下命令安装。
plotnine库常用函数如表5-9所示。
表5-9 plotnine库常用函数
在使用的过程中,首先需要创建一个绘图对象,创建的过程发生在一对括号中,使用“+”连接。其中包含“ggplot”对象的创建、绘图函数的调用、绘图属性的设置等。然后,使用“pint()”函数输出绘图对象。
在plotnine库中,实现散点图绘制的函数是“geom_plot()”。图5-39所示为绘制的“tips”数据集中消费费用与小费之间关系的散点图,其实现代码如下:
图5-39 plotnine库中散点图的效果
在本例中,首先加载“tips”数据集,并且提取“total_bill”和“tip”两列数据保存到变量“df”中,然后创建绘图对象。首先,在“ggplot”对象创建中,第一个参数指定绘图需要的个数,第二个参数指定横坐标和纵坐标分别显示的数据类型,并定义数据点颜色填充值。然后,调用“geom_plot()”函数绘图,其中参数的含义分别为采用圆圈表示数据点、每个数据点图形的大小是3、颜色是黑色、不显示图例。最后,将绘图对象输出。
绘制箱形图的函数是“geom_boxplot()”,使用它来绘制“tips”数据集中是否吸烟与小费关系的箱形图。在调用绘图函数时,参数“fill”用于指定根据“smoker”列的数据填充箱形图的颜色。具体效果如图5-40所示,其实现代码如下:
图5-40 plotnine库中箱形图的效果
将“geom_boxplot()”函数修改为以下函数调用形式,就可以画出小提琴图的效果,如图5-41所示。
使用“geom_bar()”函数可以绘制条形图。如果每个条形的宽度值太大,则可以通过“width”属性进行调整。参数“stat”用于设置统计方法,默认值为“count”,表示每个条形的高度等于本组数据元素的个数,如果设置为“identity”,则表示条形的高度表述数据的值。调用“geom_bar()”函数绘制条形图,这里缩短条形的宽度,具体的效果如图5-42所示,其实现代码如下:
图5-41 plotnine库中小提琴图的效果
图5-42 plotnine库中条形图的效果
增加一个新的函数“coord_fip”,可以将垂直条形图转换成横向条形图,其具体效果如图5-43所示,其实现代码如下:
(www.xing528.com)
图5-43 plotnine库中横向条形图的效果
课程思政小课堂
数据可视化历史上你不得不知的4位先锋人物!
数据可视化的发展历史中比较重要的几个人物的事迹:
1.William Playfair(1759—1823年)——跨界混搭的统计制图法之父
Playfair坚信一图胜千言,他相继发明了折线图、条形图以及饼图等。他一生所尝试的各种跨界混搭职业拓展了思维,使其创新性地把感性的图表与理性的数字相结合,正像乔布斯所说的那样,我们所经历的每件事都会在未来的某天闪现出它的价值。
2.Florence Nightingale(1820—1910年)——白衣天使南丁格尔
1854年爆发克里米亚战争,冬天野战医院的伤兵死亡率高达23%。作为志愿者的南丁格尔为了说明医院卫生环境对死亡率降低的意义绘制了南丁格尔玫瑰图。南丁格尔玫瑰图用半径而非高度表示数值大小,优雅地用圆心表现了周期性。
3.John Snow(1813—1858年)——霍乱时期的可视化医师
1854年,伦敦爆发霍乱,John Snow通过绘制街区地图分析了霍乱患者的分布与水井分布之间的关系,据此找到了霍乱爆发的根源。Snow的故事也告诉我们最佳的数据可视化是与实际问题和需求相关联的,能用最生动形象的图表阐明问题和结论的可视化就是最棒的可视化。
课程思政小课堂
4.Joseph Minard(1781—1870年)——史上最杰出的统计图
1869年,Minard绘制了一幅描述军力的“地图”,该图描绘了拿破仑军队自离开波兰,到抵达俄罗斯边界,再撤军回国的军力损失状况。法国科学家Étienne-Jules Marey评价拿破仑行军图为“对历史学家野蛮口述的一次深深蔑视”。
matp lotlib、seaborn和p lotnine技术的发展
在讲述数据可视化的实际操作、真实案例时,介绍matplotlib、seaborn、plotnine的发展历史:
(1)matplotlib库的产生、发展和优缺点。
(2)seaborn库的产生、发展和优缺点。
(3)plotnine库的产生、发展和优缺点。
通过对matplotlib、seaborn和plotnine技术的发展介绍,同学们能体会到数据科学的发展是分阶段的,是不断进步发展的,同时启发同学们明白在学习或者工作中也要注意事物发展的规律性和阶段性,学会用发展的眼光看问题。
思考与练习
1.假设变量x取值区间是0~20,使用matplotlib库提供的方法绘制函数sin(x)的图形。数据点使用标记“o”,并通过线连接,颜色为红色。
2.存在一组数,X=[1,2,3,4,5],Y=[3,5,6,5,4],数据点对应的标签分别为Label=['A','B','C','D','E'],请分别绘制条形图和横向条形图以显示该组数据。
3.编程实现使用seaborn库绘图,并将显示样式改为白色背景加网格(whitegrid)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。