前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Day4.五种常见图形的绘制

Day4.五种常见图形的绘制

作者头像
DataScience
发布2020-05-18 14:42:50
2.2K0
发布2020-05-18 14:42:50
举报
文章被收录于专栏:A2DataA2Data

昨天的课程中我们了解了常用的物种图形:散点图,折线图,柱状图,直方图,饼图。今天我们一起用Matplotlib和Seaborn来画出它们。

在学习使用Matplotlib时我们可以体会到:它在使用时灵活,可以定制化绘图,但是时间上的花费也比较多。为了提高画图效率,包Seaborn基于Matplotlib底层开发,使用更少的代码,将常用的可视化绘图过程进行封装,有时只需要一行代码便可以画出我们想要的图形,省时省力;此外seaborn还提供更为丰富的图像以及3D图形供我们使用。掌握两个库的使用可以满足我们在不同情况下的需求。

散点图

散点图(scatter plot),它将两组数据(或者变量)的值显示在二维坐标中,适合展示两个变量之间的关系。

代码语言:javascript
复制
#数据准备:随机产生1000个(x,y)
import numpy as np
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
#Matplotlib画图
import matplotlib.pyplot as plt
plt.scatter(x,y,marker='o')
plt.show()

#Seabron画图
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'x':x,'y':y})
sns.jointplot(x="x", y="y", data=df, kind='scatter')
plt.show()

用seaborn画图时,使用函数 sns.jointplot(x, y,data=None, kind=‘scatter’) 画散点图。其中x,y是data中的下标,data就是我们要传入的数据。

在Seaborn中,数据格式需要转换一下,采用科学计算库Pandas中的数据格式DataFrame;对DataFrame的概念我们了解即可,下期DataScience也会推出科学计算库Numpy和Pandas的使用中会有讲解。

运行结果:

第一张散点图用matplotlib绘制,第二张用seaborn绘制。我们可以看到两张图的区别:matplotlib默认情况下绘图区呈现是一个长方形,而seaborn是正方形并且含有x轴和y轴的标签;seaborn还展示散点图还给出了两组数据(变量)的分布情况。

折线图

折线图能够显示数据的变化趋势,在matplotlib使用plot函数绘制,而在seaborn使用 lineplot(x,y,data=None)函数;data是传入的数据,一般是pandas中的DataFrame数据结构。

代码语言:javascript
复制
#数据准备
x = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [5, 3, 6, 20, 17, 16, 19, 30, 32, 35]

# 使⽤Matplotlib画折线图
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()

#使⽤Seaborn画折线图:lineplot(x,y,data=None)函数
# data是要传入的数据.
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'x': x,'y':y}) # pandas中的Dataframe数据结构
sns.lineplot(x="x", y="y",data=df)
plt.show()

运行结果:

直方图

直方图( histogram )将横坐标等分成一定数量的小区间,在小区间内填充图形,它的高度是y值。特点是用来绘制连续性的数据,展示一组或者多组数据的分布状况(统计)。

代码语言:javascript
复制
#数据准备:创建一个一维随机数组
import numpy as np
import random
import pandas as pd

a = np.random.randn(100)
x = pd.Series(a) # Series是pandas中用来存放一维数组的数据格式

# ⽤Matplotlib画直⽅图;
"""
使用plt.hist(x, bins=10)函数
参数x是一维数组,bins代表小区间的数量,默认是10。
"""

import matplotlib.pyplot as plt
plt.hist(x, bins=10)
plt.show()

# ⽤Seaborn画直⽅图:
'''
使用sns.distplot(x, bins=10, kde=True)函数
参数x是一维数组,bins代表直方图中的小区间数量,kde代表显示核密度估计,默认是True。
核密度估计是通过核函数来估计概率密度的方法。
'''
import seaborn as sns
sns.distplot(x, kde=False)
plt.show()
# 图三显示用核函数估计概率密度
sns.distplot(x, kde=True)
plt.show()

运行结果:

条形图

通过直方图可以看到变量的数值分布,那么条形图可以帮我们查看类别的特征。在条形图中,长条形的长度表示类别的频数,宽度表示类别。

条形图(bar chart)绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

代码语言:javascript
复制
# 数据准备
x = ['Cat1', 'Cat2', 'Cat3', 'Cat4', 'Cat5']
y = [3, 5, 7, 2, 9]

# ⽤Matplotlib画条形图
# plt.bar(x, height)函数,参数x代表x轴的类别,height是y轴的数值
import matplotlib.pyplot as plt
plt.bar(x,y)
plt.show

# ⽤Seaborn画条形图
# sns.barplot(x=None,y=None,data=None)函数;参数data为DataFrame类型
import seaborn as sns
sns.barplot(x,y)
plt.show()

运行结果:

饼图

饼图(Pie Chart)可以显示每个部分大小与总和之间的比例。在Python数据可视化中,主要用Matplotlib的pie函数来绘制。

代码语言:javascript
复制
# 数据准备,显示各学历人数的比例
nums = [20, 42, 18, 7, 6]
labels = ['High-school', 'Bachelor', 'Master', 'Ph.d', 'Other']

# pie(x, labels=None)函数,x代表绘制饼图的数据,labels是缺省值,可以为饼图添加标签
import matplotlib.pyplot as plt
plt.pie(x=nums, labels=labels, autopct='%1.1f%%')
# autopct:设置圆内的文本 # '1.1f%'指图片上显示的数字格式,表示小数点前后位数# 另外两个%%是format格式的符号plt.show()

运行结果:

03

小作业

1、说出Matplotlib和Seaborn库的区别。

2、总结画出五种常见图像的函数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataScience 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 散点图
  • 折线图
  • 直方图
  • 条形图
  • 饼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档