import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(12,8))
fontsize = 16
# 绘制第⼀幅图:双折线图
plt.subplot(2,2,1)
# 创建一个包含100个元素的等间隔数组x,其取值范围从0到3(包含0和3)
x = np.linspace(0,3,100)
# 刻度设置为从0到4.5,步长为0.5的位置
plt.xticks(np.arange(0,4.5,0.5))
plt.yticks(np.arange(0,10,1))
#设置显示范围
plt.xlim(left=0, right=4)
plt.ylim(bottom=0, top=10)
plt.plot(x, x, 'C0', linewidth=3, linestyle='solid', label='$y=x$')
plt.plot(x, x**2, 'C1', linewidth=3, linestyle='solid', label='$y=x^2$')
plt.title('双折线图', fontsize=fontsize)
plt.xlabel('x轴标签', fontsize=fontsize)
plt.ylabel('y轴标签', fontsize=fontsize)
plt.annotate('$y=x$', xy=(2,2), fontsize=fontsize, color='C0',xytext= (+40,-40),textcoords='offset points',arrowprops = dict(arrowstyle='->'))
plt.annotate('$y=x^2$', xy=(2.5,6.25), fontsize=fontsize, color='C1',xytext= (+40,-40),textcoords='offset points',arrowprops = dict(arrowstyle='->'))
plt.legend(loc='upper left')
plt.grid()
#第⼆幅⼦图:绘制双柱状图
plt.subplot(2,2,2) #axes
labels = ['组1', '组2', '组3', '组4', '组5']
car1_sale = [20, 29, 32, 30, 27]
car2_sale = [23, 32, 30, 25, 25]
#创建一个与labels长度相同的数组,表示每个柱子的x坐标位置
x = np.arange(len(labels))
width = 0.35 # 柱状图的宽度
rects1 = plt.bar(x - width / 2, car1_sale, width, label='阿迪达斯', color='C1')
rects2 = plt.bar(x + width / 2, car2_sale, width, label='耐克', color='C2')
plt.ylabel('销量', fontsize=fontsize)
plt.title('两种品牌销量对比', fontsize=fontsize)
plt.xticks(x, labels, fontsize=fontsize)
plt.legend()
# 每个柱⼦上绘制y值
plt.bar_label(rects1, padding=3, fontsize=fontsize)
plt.bar_label(rects2, padding=3, fontsize=fontsize)
# 第三幅⼦图:绘制散点图
plt.subplot(2, 2, 3)
N = 45 # 散点个数
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N)) ** 2
plt.scatter(x, y, s=area, c=colors, alpha=0.76)
plt.xlabel('x坐标', fontsize=fontsize)
plt.ylabel('y坐标', fontsize=fontsize)
plt.title('45个散点', fontsize=fontsize)
# 第四个⼦图:饼图
plt.subplot(2, 2, 4)
labels = [u'西兰花', u'土豆', u'胡罗卜', u'茄⼦'] # 定义标签
sizes = [120, 255, 300, 80] # 每块值
colors = ['C0', 'C1', 'C2', 'C3'] # 每块颜⾊定义
explode = (0, 0, 0.03, 0) # 某⼀块分割,值越⼤分割间隙越⼤
_, text1, text2 = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
labeldistance=1.2, # 图例距圆⼼半径倍距离
autopct='%3.2f%%', # 数值保留固定⼩数位
shadow=False, # ⽆阴影设置
startangle=90, # 逆时针起始⻆度设置
pctdistance=0.8) # 数值距圆⼼半径倍数距离
# texts1饼图外label,texts2饼图内
for t in text1:
t.set_size(fontsize)
for t in text2:
t.set_size(fontsize)
plt.axis('equal')
plt.legend()
plt.tight_layout()
plt.show()
matplotlib作图示例1
最新推荐文章于 2024-05-02 10:00:00 发布
本文详细介绍了如何使用Python的matplotlib库创建双折线图、双柱状图、散点图和饼图,展示了数据可视化的基本步骤和参数设置。
摘要由CSDN通过智能技术生成