Python(Matplotlib绘图)

1. (1)绘制y=sin(x)和y=cos(x)在[-pi,pi]上的曲线图,其中y=sin(x)显示为蓝色实线,线宽4.0;y=cos(x)显示为红色虚线,线宽5.0。在横轴和纵轴上标注x,y,并画网格线。(2)将(1)中条曲线分别绘制在两个子图中。

import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(-np.pi, np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制单个图形
plt.plot(x, y1, color='blue', linewidth=4.0)
plt.plot(x, y2, color='red', linewidth=5.0, linestyle='--')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()
# 分别绘制两个子图
fig, ax = plt.subplots(nrows=2, ncols=1)
ax[0].plot(x, y1, color='blue', linewidth=4.0)
ax[0].set_ylabel('y1')
ax[0].grid(True)
ax[1].plot(x, y2, color='red', linewidth=5.0, linestyle='--')
ax[1].set_xlabel('x')
ax[1].set_ylabel('y2')
ax[1].grid(True)
plt.show()

Python(Matplotlib绘图)_第1张图片

Python(Matplotlib绘图)_第2张图片

2. 家庭消费支出情况为:娱乐5%,育儿10%,饮食10%,房贷65%,交通5%,其他5%,绘制饼图,并将占比最大的部分脱出饼块,在每个部分的饼外侧标注该饼块表示的消费项。画出家庭消费支出情况的柱状图,并用折线连接该柱体。

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
import matplotlib.pyplot as plt

# 家庭消费支出情况
labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其他']
sizes = [5, 10, 10, 65, 5, 5]
explode = (0, 0, 0, 0.1, 0, 0)  # 脱离饼块

# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.title('家庭消费支出情况')
plt.show()

# 绘制柱状图
fig, ax = plt.subplots()

x = range(len(labels))
rects = ax.bar(x, sizes, align='center')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.set_ylabel('消费占比')
ax.set_title('家庭消费支出情况')

# 标注每个柱状图表示的消费项
for i, rect in enumerate(rects):
    height = rect.get_height()
    ax.annotate(f'{sizes[i]}%', xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3),
                textcoords="offset points", ha='center', va='bottom')

# 将柱体用折线连接
x_pos = [rect.get_x() + rect.get_width() / 2 for rect in rects]
y_pos = [rect.get_height() for rect in rects]
plt.plot(x_pos, y_pos, '-o')
plt.show()

Python(Matplotlib绘图)_第3张图片

Python(Matplotlib绘图)_第4张图片

3. (1)绘制关于x,y,z的三维曲线,它们的关系为x=sin(z),y=cos(z),z的范围为[0 30],曲线为红色。(2)绘制三维曲线和曲面,z=1/(sqrt((1-x)^2+y^2)+sqrt((1+x)^2+y^2)),x,y的范围自定,绘制曲面图的等高线图。

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d as p3d
z=np.linspace(0,30,10000)
x=np.sin(z);y=np.cos(z)
fig=plt.figure()
ax=fig.add_axes(p3d.Axes3D(fig))
ax.plot(x,y,z,'red')
plt.show()
x=np.linspace(-1,1,1000)
y=np.linspace(-1,1,1000)
X,Y=np.meshgrid(x,y)
Z=1 / (np.sqrt((1 - X)**2 + Y**2) + np.sqrt((1 + X)**2 + Y**2))
CS=plt.contour(X,Y,Z,10)
plt.clabel(CS,inline=1,fontsize=10)
plt.show()

 Python(Matplotlib绘图)_第5张图片

Python(Matplotlib绘图)_第6张图片

你可能感兴趣的:(python,matplotlib,开发语言)