作业1
代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制两条线,分别设置不同的样式
# 第一条线:红色虚线,圆形标记,线宽 1.5,标记大小 6
plt.plot(x,y1,"r--o",lw=1.5,ms=6)
# 第二条线:绿色实线,方形标记,线宽 2,标记大小 8
plt.plot(x,y2,"g-s",lw=2,ms=8)
plt.show()
运行结果:

作业2代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成 100 个随机点
x = np.random.rand(100)
y = np.random.rand(100)
# 点的大小根据 x 坐标值线性变化
sizes = 500 * x
# 点的颜色根据 y 坐标值使用 'plasma' 颜色映射
# 透明度为 0.6,边缘颜色为黑色
plt.scatter(x,y,s=sizes,
c=y,
cmap="plasma",
alpha=0.6,
edgecolors="k")
plt.show()
运行结果:
作业3
代码:
import matplotlib.pyplot as plt
import numpy as np
# 有两组数据
categories = ['Apple', 'Banana', 'Cherry', 'Date', 'Eggplant']
values1 = [30, 25, 40, 15, 20]
values2 = [20, 30, 35, 25, 10]
# 绘制两组并列的条形图,第一组颜色为橙色,第二组颜色为紫色
bar_width=0.35
x1_pos=np.arange(len(categories))
x2_pos=x1_pos+bar_width
# 条形宽度为 0.35,添加图例
plt.bar(x1_pos,values1,width=bar_width,
color="orange",
label="categories-values1")
plt.bar(x2_pos,values2,width=0.35,
color="purple",
label="categories-values2")
plt.legend()
plt.show()
运行结果:
作业4
代码:
import matplotlib.pyplot as plt
# 数据
sizes = [20, 30, 25, 15, 10]
labels = ['Category1', 'Category2', 'Category3', 'Category4', 'Category5']
# 绘制饼图,要求:
# 突出显示 Category2
# 显示百分比,保留两位小数
# 开始角度为 120 度
# 添加阴影
# 扇形边缘颜色为黑色,线宽为 1
plt.pie(sizes,labels=labels,
explode=[0,0.05,0,0,0],
autopct="%.2f%%",
startangle=120,
shadow=True,
wedgeprops={"edgecolor":"k","lw":1})
plt.show()
运行结果:
作业5
代码:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为黑体
plt.rcParams["font.sans-serif"]=["SimHei"]
# 解决符号显示问题
plt.rcParams["axes.unicode_minus"]=False
# 生成 2000 个服从正态分布的随机数
data = np.random.randn(2000)
# 绘制直方图,箱数为 40,颜色为橙色,透明度为 0.6
plt.hist(data,bins=40,color="orange",alpha=0.6)
# 设置合适的 x 轴和 y 轴标签以及标题
plt.xlabel("x")
plt.ylabel("y")
plt.title("直方图")
plt.show()
运行结果:
作业6
代码:
import matplotlib.pyplot as plt
import numpy as np
# 设置全局字体为黑体
plt.rcParams["font.sans-serif"]=["SimHei"]
# 解决符号显示问题
plt.rcParams["axes.unicode_minus"]=False
# 生成三组数据,分别服从均值为 0、1、2,标准差为 1 的正态分布,每组 150 个数据
data1 = np.random.normal(0, 1, 150)
data2 = np.random.normal(1, 1, 150)
data3 = np.random.normal(2, 1, 150)
data = [data1, data2, data3]
# 绘制水平箱线图,填充箱体颜色为绿色
box=plt.boxplot(data,vert=False,orientation="horizontal",patch_artist=True)
for patch in box['boxes']:
patch.set_facecolor("g")
# 设置合适的 x 轴和 y 轴标签以及标题
plt.xlabel("x")
plt.ylabel("y")
plt.title("水平箱线图")
plt.show()
运行结果:
作业7
代码:
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# 创建一个 1 行 3 列的子图布局
# 在第一个子图中绘制正弦函数,标题为 'Sine'
fig,axes=plt.subplots(1,3)
axes[0].plot(x,y1)
axes[0].set_title("Sine")
# 在第二个子图中绘制余弦函数,标题为 'Cosine'
axes[1].plot(x,y2)
axes[1].set_title("Cosine")
# 在第三个子图中绘制正切函数,标题为 'Tangent'
axes[2].plot(x,y3)
axes[2].set_title("Tangent")
# 自动调整子图间距
plt.tight_layout()
plt.show()
运行结果:
作业8【未完成切片分离部分】
代码:
import matplotlib.pyplot as plt
import numpy as np
image_arr = np.zeros((700, 700, 3), dtype=np.uint8)
# 利用切片来进行红色部分设置
# 设置主对角线和副对角线上的红色方块
block_positions = [
((100, 200), (100, 200)),
((200, 300), (200, 300)),
((300, 400), (300, 400)),
((400, 500), (400, 500)),
((500, 600), (500, 600)),
((100, 200), (500, 600)),
((200, 300), (400, 500)),
((400, 500), (200, 300)),
((500, 600), (100, 200)),
]
for (x0,x1),(y0,y1) in block_positions:
image_arr[x0:x1,y0:y1]=(255,0,0)
# 绘制网格
line_positions=[
([100,100],[0,700]),([200,200],[0,700]),([300,300],[0,700]),
([400,400],[0,700]),([500,500],[0,700]),([600,600],[0,700]),
([0,700],[100,100]),([0,700],[200,200]),([0,700],[300,300]),
([0, 700], [400, 400]), ([0, 700], [500, 500]), ([0, 700], [600, 600])
]
for (x0,x1),(y0,y1) in line_positions:
plt.plot([x0,x1],[y0,y1],"w-",lw=0.3)
# 显示图像
plt.imshow(image_arr)
plt.show()
运行结果: