这节课就开始可视化数据的内容啦!
为了不赘述,我把入门和细节需要注意的内容两篇文章贴到这里,大家可以通过这个链接通道到相关文章借助学习。
文科生学Python系列13: matplotlib绘图/条形图
文科生学Python系列14: matplotlib绘图/seaborn
里面包括有每次绘图之前需要导入到数据包有什么。几种不同类型的可视化数据在什么情况下使用。
这里给大家简单列一下基本的命令行,具体的执行可以前往阅读:
连续变量 - 直方图:plt.hist(data)
连续变量 - 方图:plt.boxplot(data)
离散变量 - 条形图:plt.bar(x,y)
离散变量 - 饼图:plt.pie(data)
两个变量 - 散点图:plt.scatter(x,y)
多变量 - 矩阵图:pandas.scatter_matrix(df)
下面我们来看看两篇链接文章中没有提及的部分——数据图表的定制
前面的图表绘制只画出了图表的基本形状,并没有对细节进行绘制。以下用泡泡图的形式
这幅图表达的是各个国家人口收入和健康水平的关系,横坐标是人均GDP(人均收入水平),纵坐标是人口平均寿命(健康程度),其中的泡泡代表国家,泡泡的大小代表了国家人口数量的多少,泡泡的颜色代表所在大洲的不同(如红色代表亚洲国家,蓝色代表非洲国家,绿色的是美洲,黄色的是欧洲)
泡泡分布在从左下角到右上角的斜线上,代表了人口寿命和人口收入呈正相关关系。在右下角和左上角的地方几乎是空白的,代表收入水平比较高的区域,人口寿命比较长;而在收入水平比较低的区域,人口的寿命一般都不会太长(65岁以下)。而在发展中国家中,寿命差距比较大,比如在印度平均寿命在65岁,中国的则是七八十岁,主要还是在发展中国家中人均收入水平差距较大,两极分化比较大。
那我们开始数据图表的绘制吧!
老师在绘制过程中首先是用了最初的两个语句:
plt.scatter (df.gdp, df.life)
plt.show ()
大家可以先在自己的运行行中输入,看看得出的是什么,然后就能大概明白上图中间添加的那些参数在图表显示中都形成了什么效果。
这个过程中要是只添加
plt.title('各国健康和经济水平关系')
这段汉字,在我们的软件中汉字是显示不全的。为了达到效果,没有乱码,我们在这一命令行前面加上
plt.rcParams['font.sans-serif']=['SimHei']
这一句,表示设置成黑体。运行后的结果就是,全部字都能正常显示啦!
然后后面两句设置横坐标和纵坐标的显示,分别是这份数据想要分析这两者之间的关系参数。
而其实上图得出的散点主要集中分布在0附近,也就是绝大多数的数据在小数值之内。所以需要把横坐标的间隔调整一下:
plt.xscale('log')
创建数值的列表来存放之前的数值,也就是
tick_value=[1000,10000,100000]
创建对应的字符串列表,也就是
tick_label=['1k','10k','100k']
然后使用曾经使用过的
plt.xticks(tick_value,tick)label)
做一个对应即可。调整后运行:
接下来是要将散点图设置成泡泡图,所以要设置每个点的大小。泡泡的大小和国家人口数相对应,此时就需要重新定义size,为了避免人口数非常大,这里做一个缩小的比例。
size=df.popu/1e6*2
然后再散点图的命令行后面加上s=size,s代表设置的大小:
plt.scatter(df.gdp, df.life,s=size)
这个时候可以运行命令行,发现图形的界限并不明显。所以加下来为了更好地区分,这里将每个大洲绘制不同的颜色,这里会建一个大洲和颜色对应的字典命令:
map_dict={'Asia':'red'}
其他颜色自行补充~
然后需要用map的方法将颜色和各大洲对应起来:
colors=df.continent.map(map_dict)
colors.head()
再把原语句中加上颜色的命令行:
plt.scatter (df.gdp, df.life,s=size,c=colors)
然后运行试试看,效果怎么样吧!
接下来就是优化的步骤了
用plt.text来添加文字,后接坐标轴的位置,然后接文字的名称
plt.text(1350,73,‘India’)
后面自行添加其他国家吧!将会在图表上显示文字。
要是需要添加网格的话,加一句
plt.grid(Ture)
下图就是我们这节课提及到的代码内容啦!
大家一定要多练习哟!
我们这节课最后一部分的内容是余老师讲作业的内容,涉及到美国大选哦!感兴趣的同学可以回到课堂听听这部分的精彩内容!