matplotlib库最全学习笔记(总结版一)

一、基本图形快速绘制:

     1、散点图:scatter


import numpy as np
import matplotlib.pyplot as plt

N = 1000
x = np.random.randn(N)
y = np.random.randn(N)

plt.scatter(x, y)

plt.show()

在jupyter笔记本运行结果如下:

matplotlib库最全学习笔记(总结版一)_第1张图片


scatter还有许多参数用来调整图形的外观,常用的参数如下:

s 标记的大小
c 图形颜色,默认为蓝色
marker 标记形式,默认为小圆圈“o”
alpha 透明度

更多参数参看:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html?highlight=scatter#matplotlib.pyplot.scatter

2、折线图:plot

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 100)

y = x**2

plt.plot(x,y)

plt.show()

 运行结果如下:

matplotlib库最全学习笔记(总结版一)_第2张图片

同样,plot也有一些参数可以改变图形样式,例如颜色、标记形状、标记大小等等,但使用如下的格式化字符表示更加方便

fmt = "[color][marker][line]"

上面例子改为:plt.plot(x, y, "ro--")则输出为:

matplotlib库最全学习笔记(总结版一)_第3张图片

提示:若plot的图像横轴为日期形式,可使用pyplot.plot_date(x, y, fmt, xdate=True, ydate=False)绘制。

颜色、标记和线型都有对应的符号表示,详细可查看:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html?highlight=plot#matplotlib.pyplot.plot

3、条形图:bar

import numpy as np
import matplotlib.pyplot as plt

N = 5

y = [4, 6, 2, 1, 6]

index = np.arange(N)

plt.bar(left=index, height=y)

plt.show()

matplotlib库最全学习笔记(总结版一)_第4张图片

条形图的参数: bar(left, bottom, height, width, edgecolor, linewidth)   left是标量序列,条形图的横坐标。bottom是标量序列,若为竖直条形图默认为0。height是条形图的高度,也是标量序列。width是每个条的宽度,默认值0.8。其他参数见https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html?highlight=bar#matplotlib.pyplot.bar

绘制并列条形图:

import numpy as np
import matplotlib.pyplot as plt

index = np.arange(4)

a = [32, 54, 67, 90]
b = [44, 33, 67, 98]

bar_width = 0.3

plt.bar(index, a, bar_width, "b")
plt.bar(index+bar_width, b, bar_width, "r")

plt.show()

 matplotlib库最全学习笔记(总结版一)_第5张图片

只要将第二组数据横向坐标加上条形的宽度即可。

竖向的层叠图可改变相应的bottom值,而使index为0,即可。

注意:绘制水平条形图,还可用barh

4、直方图:hist

import numpy as np
import matplotlib.pyplot as plt

mu = 100
sigma = 20
x = mu + sigma*np.random.randn(2000)

plt.hist(x, bins=10, color="r", edgecolor="black", normed=True)

plt.show()

matplotlib库最全学习笔记(总结版一)_第6张图片

hist的参数:x是矩阵或矩阵序列。bins是整数或序列,如果是序列的话,横轴可以是不等间隔的。normed是是否标准化的意思,若为False,则纵轴显示数据的个数,不过现在这个参数已经被弃用,而是用desity来代替。

另外常见的参数还有color、edgecolor等等,更多参数介绍见https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html?highlight=hist#matplotlib.pyplot.hist

以上是绘制1-D直方图的方法,还可以绘制2-D直方图,用hist2d实现

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(1000)+2
y = np.random.randn(1000)+5

plt.hist2d(x, y, bins=50)

plt.show()

matplotlib库最全学习笔记(总结版一)_第7张图片

5、饼状图:pie

import numpy as np
import matplotlib.pyplot as plt

labels = "A", "B", "C", "D"
fracs = [15, 29, 89, 54]
explode = [0, 0.1, 0, 0] #设置突出显示的参数部分,此处表示只有B突出显示

plt.axes(aspect=1) #使坐标轴横纵等距

#autopct为在饼状图内部显示出相应的数据(百分比)
plt.pie(x=fracs, labels=labels, autopct="%.0f%%", explode=explode)

plt.show()

matplotlib库最全学习笔记(总结版一)_第8张图片

pie的参数x表示数据列表。 labels表示类别标签列表,是一系列字符串。 autopct可以显示各部分的占比。 explode突出显示某些部分。

另外还有shadow是在饼图下显示一个阴影。

更多参数可以参看https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html?highlight=pie#matplotlib.pyplot.pie

6、箱形图(箱线图):boxplot实现。显示一组数据的统计分散情况(上边缘、上四分位数、中位数、下四分位数、下边缘、异常值)

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(100)

data = np.random.normal(size=1000, loc=0, scale=1)

#sym改变异常值的显示形状,whis表示虚线的长度
plt.boxplot(data, sym="o", whis=1.5)

plt.show()

matplotlib库最全学习笔记(总结版一)_第9张图片

再来看一下用boxplot同时绘制多个箱形图,

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(100)

data = np.random.normal(size=(1000,4), loc=0, scale=1)
labels = ["A", "B", "C", "D"]


plt.boxplot(data, labels=labels)

plt.show()

matplotlib库最全学习笔记(总结版一)_第10张图片

再来讨论下boxplot的参数问题,x: 数组或向量序列。 sym: 异常值的图形显示形状。whis: 调整大于四分位数而小于边缘值数据显示的多少。

参看更多参数:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html?highlight=boxplot#matplotlib.pyplot.boxplot

 

注:本博客为本人从视频https://www.bilibili.com/video/av22028273/?p=1学习总结而来。

 

你可能感兴趣的:(数据可视化)