目录
直方图
代码:
#导入 numpy 和 matplotlib.pyplot 两个库
import matplotlib.pyplot as plt
import numpy as np
# 创建随机数生成器和生成数据
# 随机数生成器1
random_state1 = np.random.RandomState(111)
# 生成数据1,正态分布
random_x1 = random_state1.normal(loc=0.5, scale=0.2, size=10000)
# 随机数生成器2
random_state2 = np.random.RandomState(222)
# 生成数据2,正态分布
random_x2 = random_state2.normal(loc=0.7, scale=0.3, size=15000)
# 随机数生成器3
random_state3 = np.random.RandomState(333)
# 生成数据3,正态分布
random_x3 = random_state3.normal(loc=0.9, scale=0.1, size=8000)
# 绘制直方图
# 画出三条直方图
plt.hist([random_x1, random_x2, random_x3], bins=25, label=['Data 1', 'Data 2', 'Data 3'])
# 添加图例
plt.legend()
# 设置标题
plt.title("Histogram of Random Data")
# 设置x轴标签
plt.xlabel("Value")
# 设置y轴标签
plt.ylabel("Frequency")
# 显示图形
plt.show()
输出:
饼图
代码:
# 导入所需库
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]
# 绘制饼图
plt.pie(money_scale,
labels=kinds, # 设置饼图各部分对应的标签
autopct='%3.1f%%', # 设置百分比标签格式
startangle=180) # 设置饼图的起始角度
# 显示饼图
plt.show()
这段代码通过使用matplotlib.pyplot
和matplotlib
库来创建一个饼图。注释中解释了每个步骤的作用:
- 导入所需的库。
- 配置中文显示,使得图表中的中文能够正常显示。
- 定义了要绘制饼图的数据,
kinds
表示每个部分的标签,money_scale
表示每个部分对应的数值。 - 最后通过
plt.show()
显示饼图。
输出:
改为圆环图:
代码1:
# 导入所需库
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]
# 绘制饼图
plt.pie(money_scale,
wedgeprops={'width': 0.5}, # 设置饼图的内外半径比例
pctdistance=3/4, # 设置百分比标签距离饼图中心的距离
labels=kinds, # 设置饼图各部分对应的标签
autopct='%3.1f%%', # 设置百分比标签格式
startangle=180) # 设置饼图的起始角度
# 显示饼图
plt.show()
这段代码通过使用matplotlib.pyplot
和matplotlib
库来创建一个饼图。注释中解释了每个步骤的作用:
- 导入所需的库。
- 配置中文显示,使得图表中的中文能够正常显示。
- 定义了要绘制饼图的数据,
kinds
表示每个部分的标签,money_scale
表示每个部分对应的数值。 - 使用
plt.pie()
函数绘制饼图。其中的参数设置了饼图的属性,如内外半径比例、百分比标签的距离、标签、百分比标签的格式和起始角度等。 - 最后通过
plt.show()
显示饼图。
输出1:
代码2:
# 导入所需库
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]
# 绘制圆环图
plt.pie(money_scale,
wedgeprops={"width": 0.4}, # 设置圆环宽度
pctdistance=3/4,
labels=kinds,
autopct='%3.1f%%',
startangle=180)
# 画一个空白的圆形,相当于盖住内部的一部分,形成圆环效果
circle = plt.Circle((0, 0), 0.3, fc='white')
plt.gca().add_artist(circle)
# 显示圆环图
plt.axis('equal') # 设置坐标轴刻度相等,使圆环图为正圆
plt.show()
代码中,使用wedgeprops
参数的width
属性将圆环宽度设置为0.4,即内环和外环之间的距离。然后通过添加一个白色的圆形来盖住内部一部分,形成圆环效果。最后使用plt.axis('equal')
来设置坐标轴刻度相等,使圆环图呈现为正圆形。
输出2:
改为爆炸图:
代码:
# 导入所需库
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]
explode = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7] # 设置“爆炸”程度
# 绘制爆炸图
plt.pie(money_scale,
explode=explode, # 设置“爆炸”程度
wedgeprops={"width": 0.4},
pctdistance=3/4,
labels=kinds,
autopct='%3.1f%%',
startangle=180)
# 画一个空白的圆形,相当于盖住内部的一部分,形成圆环效果
circle = plt.Circle((0, 0), 0.3, fc='white')
plt.gca().add_artist(circle)
# 显示图表
plt.axis('equal')
plt.show()
代码中,使用了explode
参数来控制每个部分与中心的距离。
输出:
散点图
代码:
# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 创建数据
x_speed = np.arange(10, 210, 10) # 速度数据
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
17.7, 24.1, 31.5, 39.9, 49.2,
59.5, 70.8, 83.1, 96.4, 110.7,
126.0, 142.2, 159.4, 177.6, 196.8]) # 距离数据
area = np.linspace(20, 300, 20) # 气泡大小
# 绘制散点图
plt.scatter(x_speed, y_distance,
s=area, # 指定气泡大小
alpha=0.9, # 设置透明度
c='orange') # 将气泡绘制为橙色
# 显示图表
plt.show()
这段代码实现了将速度和距离用散点图展示出来,每个散点代表一个数据点。其中:
x_speed
表示速度数据,使用np.arange()
生成从10到200的等差数列。y_distance
表示距离数据,为一组预设的距离数组。area
表示气泡的大小,使用np.linspace()
生成20个从20到300的等差数列来表示不同的气泡大小。plt.scatter()
绘制散点图,通过s
参数传入气泡的大小,alpha
参数设置透明度,c
参数指定气泡的颜色。plt.show()
显示图表。
输出:
误差棒图
代码:
# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体和正常显示负号
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 定义X轴坐标
x = np.arange(3)
# 定义四组Y轴数据
y1 = np.array([2.04, 1.57, 1.63])
y2 = np.array([1.69, 1.61, 1.64])
y3 = np.array([4.65, 4.99, 4.94])
y4 = np.array([3.39, 2.33, 4.10])
# 定义四组误差数据
error1 = [0.16, 0.08, 0.10]
error2 = [0.27, 0.14, 0.14]
error3 = [0.34, 0.32, 0.29]
error4 = [0.23, 0.23, 0.39]
# 定义每个柱子的宽度
bar_width = 0.2
# 绘制四组柱状图
plt.bar(x, y1, bar_width) # 绘制第一组柱状图
plt.bar(x + bar_width, y2, bar_width, align="center", tick_label=["春季", "夏季", "秋季"]) # 绘制第二组柱状图,并设置标签
plt.bar(x + 2 * bar_width, y3, bar_width) # 绘制第三组柱状图
plt.bar(x + 3 * bar_width, y4, bar_width) # 绘制第四组柱状图
# 绘制误差棒
plt.errorbar(x, y1, yerr=error1, capsize=3, elinewidth=2, fmt='k,') # 绘制第一组误差棒
plt.errorbar(x + bar_width, y2, yerr=error2, capsize=3, elinewidth=2, fmt='k,') # 绘制第二组误差棒
plt.errorbar(x + 2 * bar_width, y3, yerr=error3, capsize=3, elinewidth=2, fmt='k,') # 绘制第三组误差棒
plt.errorbar(x + 3 * bar_width, y4, yerr=error4, capsize=3, elinewidth=2, fmt='k,') # 绘制第四组误差棒
# 显示图形
plt.show()