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笔记本运行结果如下:
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()
运行结果如下:
同样,plot也有一些参数可以改变图形样式,例如颜色、标记形状、标记大小等等,但使用如下的格式化字符表示更加方便
fmt = "[color][marker][line]"
上面例子改为:plt.plot(x, y, "ro--")则输出为:
提示:若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()
条形图的参数: 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()
只要将第二组数据横向坐标加上条形的宽度即可。
竖向的层叠图可改变相应的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()
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()
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()
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()
再来看一下用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()
再来讨论下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学习总结而来。