• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

实现基础的Python数据可视化Matplotlib

武飞扬头像
zcr python内容
帮助1

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
系列文章
更多 icon
同类精品
更多 icon
继续加载