实现基础的Python数据可视化Matplotlib
Python(matplotlib)基本图形绘制
一、matplotlib的三层结构
二、简单图形绘制
三、辅助显示层
1.显示刻度
2.添加网格
3.添加描述信息
4.显示图例
四、图像层(常见图像)
1.折线图
2.散点图
3.柱状图
4.直方图
5.饼图
一、matplotlib的三层结构
1.容器层
包含
canvas,最底层的系统层,充当画板的角色。
figure,canvas上方的应用层的第一层,充当画布的角色。
axes,figure上方的应用层的第二层,充当绘图区/坐标系。
2.图像层
指在axes上通过plot,scatter等函数根据数据绘制出的图像
3.辅助显示层
指在axes上的除了根据数据绘制出的图像以外的内容,eg 外观(facecolor),边框线(spines),坐标轴(axis),坐标轴名称(axis label),刻度(tick),标题(title),图例(legend),网格线(grid)等。该层主要给图形添加描述性信息等,使得图形更加直观,不影响图像的显示效果。
注意:
1)canvas位于最底层为系统层,用户一般接触不到;figure位于canvas之上;axes位于figure之上;axis、grid等辅助层以及图像层位于axes之上。
2)figure指整个图形,可以通过plt.figure()设置画布的大小和分辨率等;axes是数据的绘图区域/坐标系;axis是坐标系中的坐标轴,包含大小限制,刻度等。
2)一个figure可以有多个axes,一个axes可以有多个axis,包含2个则对应的axes为2D坐标系。
二、简单图形绘制
matplotlib绘图主要内容在图像层和辅助显示层,而容器层的figure只需要plt.figure()创建即可,默认一个figure有一个axes,可以通过subplot实现多个axes的多图绘制。
图形绘制的基本步骤: 准备数据→创建画布→绘制图像→显示图像
import matplotlib.pyplot as plt
import random
#0、数据
x = range(0, 20)
y = [random.uniform(10, 30) for i in range(0, 20)]
#1、创建画布
plt.figure()
#2、绘制图像
plt.plot(x, y)
#3、图像显示
plt.show()
三、辅助显示层
1.显示刻度
import matplotlib.pyplot as plt
import random
from pylab import mpl
#设置显示字体
mpl.rcParams['font.sans-serif']=['SimHei']黑体
#设置正常显示符号
mpl.rcParams['axes.unicode_minus']=False
# 0、准备数据
x=range(1,21)
y=[random.uniform(10,30) for i in range(0,20)]
# 1、创建画布
plt.figure(figsize=(20,8))
# 2.绘制图像
plt.plot(x,y)
# 3.辅助显示层——设置刻度
xlabel=['1月{}号'.format(i) for i in x]
plt.xticks(x[::5],xlabel[::5]) #两个参数的大小要一致
# 4、图像显示
plt.show()
部分字体:
字体 字体名
黑体 SimHei
楷体 KaiTi
隶书 LiSu
幼圆 YouYuan
华文细黑 STXihei
华文楷体 STKaiti
华文宋体 STSong
华文中宋 STZhongsong
华文仿宋 STFangsong
方正舒体 FZShuTi
方正姚体 FZYaoti
华文彩云 STCaiyun
华文琥珀 STHupo
华文隶书 STLiti
华文行楷 STXingkai
华文新魏 STXinwei
2.添加网格
#linestyle为网格线的类型,‘--’为虚线,alpha为网格线的清晰度0-1
plt.grid(True, linestyle='--', alpha=0.5)
3.添加描述信息
包括x,y轴标签和标题
plt.xlabel('日期')
plt.ylabel('温度')
plt.title('1月的气温变化')
4.显示图例
需要在绘制图像的函数中设置label,然后利用legend显示出来。
import matplotlib.pyplot as plt
import random
from pylab import mpl
#设置显示字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
#需要在plot中设置label,然后利用legend显示出来
# 0、准备数据
x = range(1, 32)
y1 = [random.uniform(30, 50) for i in x]
y2 = [random.uniform(30, 50) for i in x]
xlabel = ["1月{}日".format(i) for i in x]
# 1、创建画布
plt.figure()
# 2、绘制图像
plt.plot(x, y1, label='家里')
plt.plot(x, y2, color='green', linestyle='--', label='学校') # 图像风格
# 3、辅助层——设置刻度,网格线,描述信息,图例
plt.xticks(x[::5], xlabel[::5])
plt.grid(True, linestyle='--', alpha=0.5)
plt.xlabel('日期')
plt.ylabel('温度')
plt.title('1月的气温变化')
#设置图例显示的位置参数:'best' ,'right','upper right'等等
plt.legend(loc='best') # 自动显示一个合适的位置
# 4、图像显示
plt.show()
四、图像层(常见图像)
折线图,散点图,柱状图,直方图,饼图
1.折线图
import matplotlib.pyplot as plt
import random
#0、数据
x = range(0, 20)
y = [random.uniform(10, 30) for i in range(0, 20)]
#1、创建画布
plt.figure()
#2、绘制图像plot
plt.plot(x, y, color='green', linestyle='--')
#3、图像显示
plt.show()
2.散点图
import matplotlib.pyplot as plt
import random
#0、数据
x = range(0, 20)
y = [random.uniform(10, 30) for i in range(0, 20)]
#1、创建画布
plt.figure()
#2、绘制图像scatter
plt.scatter(x, y, color='green')
#3、图像显示
plt.show()
3.柱状图
# 常见参数:plt.bar(x,y,width,align='center',**kwargs)
#x, y需要传递的数据,width柱的宽度 align柱的对齐方式
import matplotlib.pyplot as plt
from pylab import mpl
#设置显示字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 0、准备数据
y = [100, 78, 66, 88]
x = range(1, 5)
# 1、创建画布
plt.figure()
# 2、绘制图像bar
plt.bar(x, y, width=0.5)
xlabel = ['大{}'.format(i) for i in x]
# 3、辅助层——设置刻度,添加描述性信息,网格线
plt.xticks(x, xlabel)
plt.xlabel('年级')
plt.ylabel('数量')
plt.title('学生人数情况')
plt.grid('True', linestyle='--', alpha=0.3)
# 4、显示图像
plt.show()
4.直方图
# plt.hist(y,bins=None)
# y需要传递的参数,bins为组距
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
#设置显示字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 0、准备数据
y = [np.random.normal(85, 3) for i in range(10000)]
# 1、创建画布
plt.figure()
# 2、绘制图像hist
plt.hist(y, 100)
# 3、辅助层
plt.title('学生成绩情况')
plt.grid('True', linestyle='--', alpha=0.3)
# 4、显示图像
plt.show()
5.饼图
# plt.pie(x,labels,autopct,colors)
# x百分比,labels每部分的名称,autopct占比显示,colors每部分颜色
import matplotlib.pyplot as plt
from pylab import mpl
#设置显示字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 0、准备数据
x = [100, 78, 66, 88]
# x=range(1,5)
xlabel = ['大{}'.format(i) for i in range(1, len(x) 1)]
# 1、创建画布
plt.figure()
# 2、绘制图像撇
plt.pie(x, labels=xlabel)
# 3、辅助层
plt.title('学生人数情况')
# 4、显示图像
plt.show()
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcfjbf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01