一、pyplot基础图标函数概述

 

 

二、pyplot饼图的绘制

 绘制示例:

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  # 0.1表示将某部分分离出来的距离,以突出显示

'''
    sizes: 饼图的各个部分的大小
    explode: 突出显示的部分
    labels: 饼图的标签
    autopct: 饼图中每部分的百分比的格式
    shadow: 是否显示阴影
    startangle: 起始角度
'''
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=False, startangle=90)

plt.axis('equal')  # 设置饼图为圆形,没有这一行则为椭圆
plt.show()

 三、pyplot直方图的绘制

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)

'''
    bins: 直方图的条数
    density: 直方图是否归一化
    histtype: 直方图的类型,stepfilled表示填充的直方图,step表示不填充的直方图
    facecolor: 直方图的颜色
    alpha: 透明度
'''
plt.hist(a, bins=10, density=True, histtype='stepfilled', facecolor='b', alpha=0.75)
plt.title('Histogram')

plt.show()

四、pyplot极坐标的绘制

import numpy as np
import matplotlib.pyplot as plt

N = 20  # 绘制极坐标中数据的个数
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)  # 从0到2π之间均匀分布N个角度(角度的开始值)
radii = 10 * np.random.rand(N)  # 随机生成N个角度对应的半径值
width = np.pi / 4 * np.random.rand(N)  # 随机生成N个角度对应的宽度值

# 面向对象的方法进行绘制
ax = plt.subplot(111, projection='polar')  # 将绘图区域划分为网格,并用projection给出绘制极坐标系的指示
bars = ax.bar(theta, radii, width=width, bottom=0.0)

# 对每一个绘制的扇形进行颜色和透明度的设置
'''
    zip(radii, bars) 将 radii 列表与 bars 列表组合在一起,生成一个迭代器,
    其中每个元素是一个包含半径值和对应扇形对象的元组。
    plt.cm.viridis 是 Matplotlib 库中的一个调色板,它提供了一种从深蓝到黄色的颜色渐变。
    r / 10. 是将半径值 r 归一化到 0 到 1 之间,因为调色板接受的输入值范围是 0 到 1。
    plt.cm.viridis(r / 10.) 根据半径值 r 在 0 到 1 之间的归一化值,从 viridis 调色板中选择一个颜色。
    bar.set_facecolor(...) 设置当前的扇形 bar 的填充颜色为选择的颜色。
    bar.set_alpha(0.5) 设置所有扇形的透明度为 0.5。透明度的取值范围是 0 到 1,其中 0 是完全透明,1 是完全不透明
'''
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的函数
# 无参默认111
fig, ax = plt.subplots()
# *10使得点在空间范围内更扩散
ax.plot(10 * np.random.randn(100), 10 * np.random.randn(100), 'o')
ax.set_title('Simple Scatter')

plt.show()

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐