python数据可视化之matplotlib精进pdf_Python数据可视化之matplotlib

数据可视化能让人们更直观的传递数据所要表达的信息。Python 中有两个专用于可视化的库,matplotlib 和 seaborn ,本文将介绍matplotlib。Matplotlib:基于Python的绘图库,提供完全的 2D 支持和部分 3D 图像支持。

Seaborn:该 Python 库能够创建富含信息量和美观的统计图形。Seaborn 基于 matplotlib,具有多种特性,比如内置主题、调色板、可视化单变量数据、双变量数据,线性回归数据和数据矩阵以及统计型时序数据等,能让我们创建复杂的可视化图形。

一、python代码实现(matplotlib库)

1、导入数据库

import matplotlib.pyplot as plt

# 我们最常用matplotlib中的pyplot模块,别名设置为plt是约定俗称常用,也可以自己设置

2、作图

结合实际绘画过程,我们来理解一下用python作图,每一行代码的意义:

图形种类很多,根据实际项目需求,绘制不同类型的图像,很多时候我们会融合多种图像,从不同角度分析结果:数值型:散点图

时间序列:折线图

分类数据:柱状图

颜色:热图下面介绍一下常见的图以及常用的属性

2.1 散点图

x=[0.5,0.75,1,2,3,3.5,4,5.5] # 某学生不同科目的学习时间

y=[10,22,25,40,50,70,90,93] # 对应不同科目的分数

# 画散点图

plt.scatter(x,y,s=200) # s表示设置散点的大小

#设置图标标题

plt.title('学生分数情况',fontsize =24)

# 设置坐标轴标签

plt.xlabel('学习时间')

plt.ylabel('考试分数')

plt.show()

2.2 折线图

# 折线图

x=[1,2,3,4,5]

y=[10,20,20,35,30]

# 作图

'''

linewidth:修改线条宽度

color: 修改线条颜色

marker: 点的形状,o表示点为圆圈标记

linestyle:线条的形状,dash表示用虚线连接,也可以直接用'--'表示

label: 增加图例

'''

plt.plot(x,y,linewidth=3,color='red',marker='o',linestyle='--',label='我是图例')

# 显示图例

plt.legend(loc = 'upper left') # loc设置图例位置

# 设置图标的标题,并且给坐标轴加上标签

plt.title('我是标题',fontsize=20) #fontsize 修改标题大小

plt.xlabel('我是横轴')

plt.ylabel('我是纵轴')

我们希望x轴的刻度是0,1,2,3,4……,y轴的刻度是0,10,20,30……,所以我们需要手动设置。

# 修改坐标轴范围——方法1

plt.xticks([0,1,2,3,4,5,6]) # 直接以列表形式给出横轴

plt.yticks(np.linspace(0,40,5)) # 利用linspace()可以生成制定范围均匀分布的数,给出纵轴

# 修改坐标轴范围——方法2

'''

axis:坐标轴范围

语法:axis[xmin,xmax,ymin,ymax]

也就是axis[x轴最小值,x轴最大值,y轴最小值,y轴最大值,]

'''

plt.axis([0,6,0,40])

'''

使用数组同时绘制多个线性

'''

x= np.arange(0,20,0.2)

y1 = x

y2 = x**2

y3 = x**3

# 使用plot绘制线条

lineList = plt.plot(x,y1,x,y2,x,y3)

# 使用setp方法可以同时设置多个线条的属性

plt.setp(lineList,color='r')

plt.show()

如何在图上添加文本注释:

# 数据

x=[1, 2, 3, 4]

y=[1, 4, 9, 16]

# 作图

plt.plot(x,y ,color='r')

# 添加坐标轴名称

plt.xlabel('我是x轴')

plt.ylabel('我是y轴')

# 添加注释

'''

参数名xy:箭头注释中箭头所在位置,

参数名xytext:注释文本所在位置,

arrowprops在xy和xytext之间绘制箭头,

shrink表示注释点与注释文本之间的图标距离

# '''

plt.annotate('我是注释',xytext=(2,10) ,xy =(2,4.5),arrowprops=dict(facecolor='black',shrink=0.02))

如何将多个子图画在一个图板上:

# 数据

x= np.arange(0,8,0.2)

y1 = x

y2 = x**2

y3 = x**3

# 创建画板

plt.figure(figsize=(3*4,1*3)) # figsize(画板宽度,画板高度),宽度决定列数,高度决定行数

ax1 = plt.subplot(1,3,1)

plt.plot(x,y1)

plt.title('我是y1对应的图')

# 创建画纸2并作图

ax2 = plt.subplot(1,3,2)

plt.plot(x,y2)

plt.title('我是y2对应的图')

# 创建画纸3并作图

ax3 = plt.subplot(1,3,3)

plt.plot(x,y3)

plt.title('我是y3对应的图')

plt.show()

2.3 柱状图

2.3.1 单系列柱状图

# 柱状图

# 数据

x = np.array(list('ABCDEF'))

y = np.random.randint(1,100,6)

# 作图

# x,y参数:x,y值

# width:宽度比例

# facecolor柱状图里填充的颜色

plt.bar(x,y,width=0.5,facecolor='lightblue')

plt.show()plt.bar - 这个网站可出售。 - 最佳的Server monitoring 来源和相关信息。# 柱状图

# 数据

x = np.array(list('ABCDEF'))

y = np.random.randint(1,100,6)

# 作图

# x,y参数:x,y值

# width:宽度比例

# facecolor柱状图里填充的颜色

plt.bar(x,y,width=0.5,facecolor='lightblue')

plt.show()

2.3.2 多系列柱状图

之前我们都是用plt来作图,事实上pandas也可以直接作图,下面就展示一下如何用pandas作多系列柱状图:

# 数据

df = pd.DataFrame(np.random.rand(10,3)*20,columns=['a','b','c'])

df

# 之前都是用plt作图,其实DataFrame也可以作图

df.plot(kind='bar')

plt.show()

图以DataFrame的index为横轴,columns为纵轴,自动生成了图例。

# 柱状图的填充颜色也可以更改

df.plot(kind='bar',colormap='Blues_r',grid=True) # grid显示网格线

plt.show()

2.3.3 堆叠图

df.plot(kind='bar',grid = True,stacked=True)

# 多系列堆叠图

# stacked → 堆叠

plt.show()

2.4 热图

# 利用随机数生成一个二维数据(5*5)

data=[]

for i in range(5):

temp = list(np.random.randint(10,50,4))

data.append(temp)

data

# 作图并选择热图的颜色填充风格,这里选择hot

from matplotlib import cm

plt.imshow(data,cmap=plt.cm.hot_r)

#设置标题,横纵坐标

plt.title('我是标题')

# 增加右侧颜色进度条

plt.colorbar()

plt.show()

颜色越深,表明数字越大。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值