[Python数据分析与展示] 数据分析之展示 matplotlib库

Matplotlib库入门

Matplotlib库的介绍

Matplotlib库由各种可视化类构成,内部结构复杂,受MATLAB启发
matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式

import matplotlib.pyplot as plt

import matplotlib.pyplot as plt
plt.plot([3, 1, 4, 5, 2])
plt.ylabel("Grade")
plt.show()

plt.plot() 只有一个输入列表或数组时,参数被当作Y轴,X轴以索引自动生成
在这里插入图片描述

存成文件

plt.savefig()将输出图形储存为文件,默认PNG格式,可以通过dpi修改输出质量

import matplotlib.pyplot as plt
plt.plot([3, 1, 4, 5, 2])
plt.ylabel("Grade")
plt.savefig('test', dpi=600)  # PNG文件
plt.show()
import matplotlib.pyplot as plt
plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])
plt.ylabel("Grade")
plt.axis([-1, 10, 0, 6])  # 设置横纵坐标尺度,x轴起-1终10;y轴起0终6
plt.show()

plt.plot(x,y)当有两个以上参数时,按照x轴和y轴顺序绘制数据点

在这里插入图片描述
pyplot的绘图区域
plt.subplot(nrows, ncols, plot_number)
以nrows为横轴数量,ncols为纵轴数量的子区域,plot_number为当前绘图区域

在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域

plt.subplot(3,2,4)
plt.subplot(324) 逗号可省略

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt


def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)


a = np.arange(0.0, 5.0, 0.02)

plt.subplot(211)
plt.plot(a, f(a))

plt.subplot(2, 1, 2)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()

在这里插入图片描述

pyplot的plot()函数

plt.plot(x,y,format_string,**kwargs)

  • x:X轴数据,列表或数组,可选
  • y:Y轴数据,列表或数组
  • format_string:控制曲线的格式字符串,可选
  • **kwargs:第二组或更多(x,y,format_string)

当绘制多条曲线时,各条曲线的x不能省略

import matplotlib.pyplot as plt
import numpy as np

a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.show()

在这里插入图片描述

  • format_string:控制曲线的格式字符串,可选

由颜色字符、风格字符和标记字符组成

颜色字符说明颜色字符说明
b蓝色m洋红色 magenta
g绿色y黄色
r红色k黑色
c青绿色 cyanw白色
#008000RNG某颜色0.8灰度值字符串
风格字符说明
'-'实线
'--'破折线
'-.'点划线
':'虚线
'' ' '无线条
标记字符说明标记字符说明标记字符说明
.点标记1下花三角标记h竖六边形标记
,像素标记(极小点)2上花三角标记H横六边形标记
o实心圈标记3左花三角标记+十字标记
v倒三角标记4右花三角标记xx标记
^上三角标记s实心方形标记D菱形标记
>右三角标记p实心五角标记d瘦菱形标记
<左三角标记*星形标记|垂直线标记
import matplotlib.pyplot as plt
import numpy as np

a = np.arange(10)
plt.plot(a, a*1.5, 'go-', a, a*2.5, 'rx', a, a*3.5, '*', a, a*4.5, 'b-.')
plt.show()

在这里插入图片描述

  • **kwargs: 第二组或更多(x,y,format_string)

color :控制颜色,color=‘green’
linestyle:线条风格,linestyle=‘dashed’
marker:标记风格,marker=‘o’
markerfacecolor:标记颜色,markerfacecolor=‘blue’
markersize:标记尺寸,markersize=20

pyplot的中文显示

方法1
pyplot并不默认支持中文显示,需要rcParams修改字体实现

import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family'] = 'SimHei'  # ‘SimHei’是黑体
plt.plot([3, 1, 4, 5, 2])
plt.ylabel("纵轴(值)")
plt.savefig('test', dpi=600)
plt.show()

在这里插入图片描述

rcParams的属性

属性说明
‘font.family’用于显示字体的名字
‘font.style’字体风格,正常 ‘normal’ 或 斜体 ‘italic’
‘font.size’字体大小,整数字号或者 ‘large’、‘x-small’

中文字体的种类

rcParams[‘font.family’]

中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文仿宋
‘YouYuan’中文幼圆
‘STSong’华文宋体
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

matplotlib.rcParams['font.family'] = 'STSong'
matplotlib.rcParams['font.size'] = 20

a = np.arange(0.0, 5.0, 0.02)

plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()

在这里插入图片描述
方法2:(建议使用)
在有中文输出的地方,增加一个属性:fontproperties

import numpy as np
import matplotlib.pyplot as plt

a = np.arange(0.0, 5.0, 0.02)

plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=20)
plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()

在这里插入图片描述

pyplot的文本显示

pyplot的文本显示函数:

函数说明
plt.xlabel()对x轴增加文本标签
plt.ylabel()对y轴增加文本标签
plt.title()对图形整体增加文本标签
plt.text()在任意位置增加文本
plt.annotate()在图形中增加带箭头的注解
import numpy as np
import matplotlib.pyplot as plt

a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')

plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=15, color='green')
plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=15)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25) #latex格式
plt.text(2, 1, r'$\mu=100$', fontsize=15)

plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()

在这里插入图片描述
plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)

import numpy as np
import matplotlib.pyplot as plt

a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')

plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=25, color='green')
plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=25)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5),
             arrowprops=dict(facecolor='black', shrink=0.1, width=2)) # shrink箭头间隙,两侧空白

plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()

在这里插入图片描述

pyplot的子绘图区域

在这里插入图片描述

plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)

理念:设定网格,选定网格,确定选中行列区域数量,编号从0开始

plt.subplot2grid((3,3),(1,0),colspan=2)
(3,3)将区域划分为3行3列,9块的区域
(1,0)当前区域为第1行第0列,即为ax2
colspan=2,选定2列的区域

ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1))

GridSpec类

import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt

gs = gridspec.GridSpec(3, 3)

ax1 = plt.subplot(gs[0, :])  # 选中第0行,包含所有列
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])  # 第1,2行,最右一列(即第2列)
ax4 = plt.subplot(gs[2, 0])
ax5 = plt.subplot(gs[2, 1])

Matplotlib基础绘图函数示例

pyplot基础图表函数概述

函数说明
plt.plot(x,y,fmt,...)绘制一个坐标图
plt.boxplot(data,notch,position)绘制一个箱型图
plt.bar(left,height,width,bottom)绘制一个条形图
plt.barh(width,bottom,left,height)绘制一个横向条形图
plt.polar(theta,r)绘制极坐标图
plt.pie(data,explode)绘制饼图
plt.psd(x,NFFT=256,pad_to,Fs)绘制功率谱密度图
plt.specgram(x,NFFT=256,pad_to,F)绘制谱图
plt.cohere(x,y,NFFT=256,Fs)绘制X-Y的相关性函数
plt.scatter(x,y)绘制散点图,其中,x和y长度相同
plt.step(x,y,where)绘制步阶图
plt.hist(x,bins,normed)绘制直方图
plt.contour(X,Y,Z,N)绘制等值图
plt.vlines()绘制垂直图
plt.stem(x,y,linefmt,markerfmt)绘制柴火图
plt.plot_date()绘制数据日期

pyplot饼图的绘制

plt.pie()

# 扁扁的饼图
import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # 突出第二块,比例为0.1

plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=False, startangle=90)

plt.show()

sizes 约定饼图的尺寸
explode 指出哪块要突出出来
labels 给出标签
autopct 显示百分号的方式
shadow 是否有阴影效果
startangle 饼图起始的角度
在这里插入图片描述

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)

plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=False, startangle=90)

plt.axis('equal')  # 正圆形的饼图
plt.show()

在这里插入图片描述

pyplot直方图的绘制

plt.hist()

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
mu, sigma = 100, 20  # 均值和标准差
a = np.random.normal(mu, sigma, size=100)

plt.hist(a, 20, histtype='stepfilled', facecolor='b', alpha=0.75)
plt.title('Histogram')

plt.show()

plt.hist()的第二个参数bin:直方图的个数
在这里插入图片描述

pyplot极坐标的绘制

面向对象绘制极坐标

import numpy as np
import matplotlib.pyplot as plt

N = 20
theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)  # 360度分为N份,left
radii = 10 * np.random.rand(N)  # 每份对应的值,height
width = np.pi / 4 * np.random.rand(N)  # 给出宽度值

ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=0.0)

for r, bar in zip(radii, bars):
    bar.set_facecolor(plt.cm.viridis(r / 10.))
    bar.set_alpha(0.5)

plt.show()

在这里插入图片描述

pyplot散点图的绘制

面向对象绘制散点图

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(10*np.random.randn(100), 10*np.random.randn(100), 'o')
ax.set_title('Simple Scatter')

plt.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值