3.1.5 箱形图
import numpy as np import matplotlib.pyplot as plt # 正态分布 data = np.random.normal(size = (500, 4)) lables = ['A', 'B', 'C', 'D'] # 用Matplotlib画箱线图 # 黄色的线就是中位数,红色的圆点是异常值 _ = plt.boxplot(data, 1, 'ro', labels = lables)
3.1.6 散点图
import numpy as np import matplotlib.pyplot as plt data = np.random.randn(100, 2) s = np.random.randint(100, 300, size = 100) color = np.random.randn(100) plt.scatter(data[:, 0], # 横坐标 data[:, 1], # 纵坐标 s = s, # 尺寸 c = color, # 颜色 alpha = 0.5) # 透明度
3.1.7 饼图
3.1.7.1 一般饼图
import numpy as np import matplotlib.pyplot as plt # 解决中文字体乱码的问题 plt.rcParams['font.sans-serif'] = 'KaiTi' labels = ["五星", "四星", "三星", "二星", "一星"] # 标签 percent = [95, 261, 105, 30, 9] # 某市星级酒店数量 # 设置图片大小和分辨率 fig = plt.figure(figsize = (5, 5), dpi = 120) # 偏移中心量,突出某一部分 # 0.1 表示 10%,自身高度的10%,是一个相对值 explode = (0, 0.1, 0, 0, 0) # 绘制饼图:autopct显示百分比,这里保留一位小数;shadow控制是否显示阴影 _ = plt.pie(x = percent, # 数据 explode = explode, # 偏移中心量 labels = labels, # 显示标签 autopct = '%0.1f%%', # 显示百分比 shadow = True) # 阴影,3D效果
3.1.7.2 甜甜圈
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize = (6, 6)) # 甜甜圈原料 recipe = ["225g flour", "90g sugar", "1 egg", "60g butter", "100ml milk", "1/2package of yeast"] # 原料比例 data = [225, 90, 50, 60, 100, 5] wedges, texts = plt.pie(data, startangle = 40) bbox_props = dict(boxstyle = "square,pad=0.3", fc = "w", ec = "k", lw = 0.72) kw = dict(arrowprops = dict(arrowstyle = "-"), bbox = bbox_props, va = "center") for i, p in enumerate(wedges): ang = (p.theta2 - p.theta1) / 2. + p.theta1 # 角度计算 # 角度转弧度----->弧度转坐标 y = np.sin(np.deg2rad(ang)) x = np.cos(np.deg2rad(ang)) ha = {-1 : "right", 1 : "left"}[int(np.sign(x))] # 水平对齐方式 connectionstyle = "angle,angleA=0,angleB={}".format(ang) # 箭头连接样式 kw["arrowprops"].update({"connectionstyle" : connectionstyle}) # 更新箭头连接方式 plt.annotate(recipe[i], xy=(x, y), xytext = (1.35 * np.sign(x), 1.4 * y), ha = ha, **kw, fontsize = 18, weight = 'bold') plt.title("Matplotlib bakery: A donut", fontsize = 18, pad = 25) plt.tight_layout()