一,直方图
# 先导入模块
import numpy as np
import matplotlib.pyplot as plt
# 准备50个随机的数据
scores = np.random.randint(0,100,50)
# 绘制直方图
plt.hist(scores,bins=8,histtype='stepfilled')
plt.show()
其中,scores为 数组(可为单个或多个的数列)
bins=8,表示矩形的条数为8,一般为10
histtype='直方图的类型' 例如:'bar' 表示默认的直方图 'barstacked' 为堆积直方图
'stepfilled' 为填充直方图 'step' 为未填充直方图。
下图为单个数组的直方图
多组数据的直方图(并用未填充直方图表示)
import numpy as np
import matplotlib.pyplot as plt
scores1 = np.random.randint(0,100,50)
scores2 = np.random.randint(0,100,50)
plt.hist([scores1,scores2],bins=8,histtype='step') # 'step' 为未填充直方图
plt.show()
二,饼图或圆环图
# 导入模块
import numpy as np
import matplotlib.pyplot as plt
# 每个扇形的占比和名称
data = np.array([20,35,25,15,45,40])
pie_labels= np.array(['A','B','C','D','E','F'])
# 绘制饼图
plt.pie(data, radius=1.5, labels = pie_labels, autopct='%3.1f%%')
plt.show()
其中,radius=1.5 表示饼图半径1.5
labels = pie_labels 表示定义每个扇形的名称
autopct='%3.1f%%' 表示保留一位小数,如果保留两位则改成.2
# 绘制圆环图
plt.pie(data, radius=1.5, wedgeprops={'width': 0.7}, labels = pie_labels, autopct='%3.2f%%', pctdistance=0.75) #保留2位小数
plt.show()
其中, radius=1.5 表示外环圆半径
wedgeprops={'width': 0.7} 表示保留的内外圆半径的差,就环的半径为0.7
pctdistance=0.75 表示占比的位置离圆心的距离为7.5
如果想要用中文命名扇形,导入的模块就有所不同,并且可以用 (startangle)来绘制扇形的起点,按顺序显示每块扇形。
如下:
# 导入模块
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 饼图外侧的说明文字
kinds = ['购物','人情往来','餐饮美食','通信物理','生活日用','休闲娱乐','交通出行','其他']
money_scale = [800,100,1000,200,300,200,200,200]
dev_position = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1] # 让每个扇形裂开 ,离圆心的距离为0.1
# 绘制饼图
plt.pie(money_scale, labels=kinds, autopct='%3.1f%%', shadow=True,
explode=dev_position, startangle=90)
plt.show()
其中 startangle=90 表示以坐标轴右边为起点逆时针转90度为扇形的绘制起点,并按逆时针显示 定义的每一个扇形
explode=dev_position 让每个扇形按定义的距离离中心裂开
三,散点图或气泡图
该函数常用的参数
s:表示数据点的大小
c :表示数据点的颜色
marker:表示数据点的样式,默认圆形
alpha:表示透明度 ,取值范围0~1,越小越透明
linewidths:表示数据点边缘的宽度
edgecolors:表示数据点边缘的颜色
#随机取50个点
num =50
x=np.random.rand(num)
y=np.random.rand(num)
#绘制散点图
plt.scatter(x, y, c='b', alpha=0.5, edgecolors='k')
气泡图
num =50
x=np.random.rand(num)
y=np.random.rand(num)
area = (30 * np.random.rand(num))**2
plt.scatter(x,y,c='b',alpha=0.5, s=area)
四,误差棒图
常用函数的参数
frnt:表示数据点的标记样式和数据点之间的链接样式
ecolor:误差棒的颜色
elinewidth:误差棒线条竖杆大小
capsize:误差棒横杆大小
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
y = (20,32,34,20,25)
y_offset = (3,5,2,3,3) # 误差棒的误差长度
plt.errorbar(x,y,yerr=y_offset,capsize=3,capthick=2)
plt.show()