1.在平面直角坐标系中绘制(0,0) 到(16, 30)的直线,颜色:红色,形状:*,添加轴标签:x,y。在同一坐标系中绘制数学函数y=sin(x)的曲线,颜色:绿色,形状:△。
2. 使用plt.subplot()创建子图,显示2个函数的图形y1=4x2-18x+9,y2=9/x。第一种方法放在上下2个子图中,第二种方法放在左右2个子图中。x的取值范围为0--14
3. 创建一个笛卡尔坐标系,使用不同的颜色和线型绘制函数的图像y12=8x, x2=-4y2 ,使用注释的形式标注这2个图像的交点坐标
Python可视化——matplotlib.pyplot绘图的基本参数详解
可以借鉴下
https://blog.csdn.net/qq_60471758/article/details/122752184
(1)
import matplotlib.pyplot as plt
import numpy as np
# 绘制直线
x1 = [0, 16]
y1 = [0, 30]
plt.plot(x1, y1, color='red', marker='*', label='line')
# 绘制函数曲线
x2 = np.linspace(0, 16, 1000)
y2 = np.sin(x2)
plt.plot(x2, y2, color='green', marker='4', label='sin(x)')
# 添加轴标签和图例
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 显示图像
plt.show()
(2)
import matplotlib.pyplot as plt
import numpy as np
# 子图1:y1 = 4x^2 - 18x + 9
plt.subplot(2, 1, 1)
x1 = np.linspace(0, 14, 1000)
y1 = 4 * x1 ** 2 - 18 * x1 + 9
plt.plot(x1, y1, color='red')
plt.title('Subplot 1')
# 子图2:y2 = 9/x
plt.subplot(2, 1, 2)
x2 = np.linspace(0.1, 14, 1000)
y2 = 9 / x2
plt.plot(x2, y2, color='blue')
plt.title('Subplot 2')
# 显示图像
plt.show()
(3)
import matplotlib.pyplot as plt
import numpy as np
# 绘制函数曲线
x = np.linspace(-4, 4, 1000)
y = 8 * x ** 2
# 创建笛卡尔坐标系
fig, ax = plt.subplots()
# 绘制y1 = 8x^2
ax.plot(x, y, color='red', linestyle='--', label='y1=8x^2')
# 绘制y2 = -4
ax.plot(x, np.full_like(x, -4), color='blue', linestyle='-.', label='y2=-4')
# 添加轴标签和图例
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 显示图像
plt.show()
参考网络
import numpy as np
import matplotlib.pyplot as plt
# 问题1
x1 = np.linspace(0, 16, 100) # 生成0到16之间的100个点作为x轴数据
y1 = x1 * 2 + 30 # 直线的y轴数据
x2 = np.linspace(0, 16, 100) # 生成0到16之间的100个点作为x轴数据
y2 = np.sin(x2) # 函数y=sin(x)的y轴数据
plt.plot(x1, y1, color='red', marker='*', label='y=2x+30') # 绘制直线
plt.plot(x2, y2, color='green', marker='^', label='y=sin(x)') # 绘制函数曲线
plt.xlabel('x') # 添加x轴标签
plt.ylabel('y') # 添加y轴标签
plt.legend() # 添加图例
plt.title('Line and Function Plot') # 添加标题
plt.show() # 显示图形
# 问题2
x = np.linspace(0, 14, 100) # 生成0到14之间的100个点作为x轴数据
y1 = 4 * x**2 - 18 * x + 9 # 函数y1=4x^2-18x+9的y轴数据
y2 = 9 / x # 函数y2=9/x的y轴数据
# 创建上下两个子图
plt.subplot(2, 1, 1)
plt.plot(x, y1)
plt.xlabel('x')
plt.ylabel('y1')
plt.title('y1=4x^2-18x+9')
plt.subplot(2, 1, 2)
plt.plot(x, y2)
plt.xlabel('x')
plt.ylabel('y2')
plt.title('y2=9/x')
plt.tight_layout() # 调整子图布局
plt.show() # 显示图形
# 创建左右两个子图
plt.subplot(1, 2, 1)
plt.plot(x, y1)
plt.xlabel('x')
plt.ylabel('y1')
plt.title('y1=4x^2-18x+9')
plt.subplot(1, 2, 2)
plt.plot(x, y2)
plt.xlabel('x')
plt.ylabel('y2')
plt.title('y2=9/x')
plt.tight_layout() # 调整子图布局
plt.show() # 显示图形
# 问题3
x = np.linspace(-10, 10, 100) # 生成-10到10之间的100个点作为x轴数据
y1 = 8 * x # 函数y1=8x的y轴数据
y2 = -4 * np.sqrt(np.abs(x)) # 函数y2=-4|sqrt(x)|的y轴数据
# 绘制函数图像
plt.plot(x, y1, color='blue', linestyle='dashed', label='y1=8x')
plt.plot(x, y2, color='purple', linestyle='dotted', label='y2=-4|sqrt(x)|')
# 找到交点坐标
x_intersection =
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
解答:
1.代码实现如下:
import numpy as np
import matplotlib.pyplot as plt
# 绘制直线
x = np.linspace(0, 16) # x的取值范围
y1 = x * 30/16 # 直线方程
plt.plot(x, y1, '*r')
# 绘制曲线
y2 = np.sin(x) # y=sin(x)
plt.plot(x, y2, 'g^')
# 添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')
# 显示图像
plt.show()
2.代码实现如下:
import numpy as np
import matplotlib.pyplot as plt
# 绘制函数1
x = np.arange(0, 143) # x的取值范围
y1 = 4*x**2 - 18*x + 9 # 函数1
plt.subplot(2,1,1) # 创建上下两个子图,当前为第一个子图
plt.plot(x, y1, 'b-')
plt.title('Functions y1 and y2')
# 绘制函数2
y2 = 9/x
plt.subplot(2,1,2) # 创建上下两个子图,当前为第二个子图
plt.plot(x, y2, 'g-')
# 绘制函数1,2交点
y3 = 8*x
y4 = -4*y2**2
x_inter = np.roots([4,-18,-9-8,0,4]) # 解方程找到交点横坐标
y_inter = 8*x_inter # 代入函数1
plt.subplot(1,2,1) # 创建左右两个子图,当前为第一个子图
plt.plot(x, y3, 'r--')
plt.plot(-y4/4, y2, 'b--')
plt.annotate(f'({x_inter[0]:.4f}, {y_inter[0]:.4f})',
xy=(x_inter[0], y_inter[0]), xytext=(-40, 40),
textcoords='offset points', fontsize=8,
arrowprops=dict(arrowstyle='->'))
plt.annotate(f'({x_inter[1]:.4f}, {y_inter[1]:.4f})',
xy=(x_inter[1], y_inter[1]), xytext=(20, -50),
textcoords='offset points', fontsize=8,
arrowprops=dict(arrowstyle='->'))
# 添加坐标轴标签
plt.subplot(2,1,1)
plt.ylabel('y1')
plt.subplot(2,1,2)
plt.xlabel('x')
plt.ylabel('y2')
# 显示图像
plt.show()
解释:
第一步:导入所需库
import numpy as np
import matplotlib.pyplot as plt
第二步:绘制直线和曲线
# 绘制直线
x = np.linspace(0, 16) # x的取值范围
y1 = x * 30/16 # 直线方程
plt.plot(x, y1, '*r')
# 绘制曲线
y2 = np.sin(x) # y=sin(x)
plt.plot(x, y2, 'g^')
第三步:添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')
第四步:绘制子图
# 绘制函数1
x = np.arange(0, 143) # x的取值范围
y1 = 4*x**2 - 18*x + 9 # 函数1
plt.subplot(2,1,1) # 创建上下两个子图,当前为第一个子图
plt.plot(x, y1, 'b-')
plt.title('Functions y1 and y2')
# 绘制函数2
y2 = 9/x
plt.subplot(2,1,2) # 创建上下两个子图,当前为第二个子图
plt.plot(x, y2, 'g-')
第五步:绘制交点和注释
# 绘制函数1,2交点
y3 = 8*x
y4 = -4*y2**2
x_inter = np.roots([4,-18,-9-8,0,4]) # 解方程找到交点横坐标
y_inter = 8*x_inter # 代入函数1
plt.subplot(1,2,1) # 创建左右两个子图,当前为第一个子图
plt.plot(x, y3, 'r--')
plt.plot(-y4/4, y2, 'b--')
plt.annotate(f'({x_inter[0]:.4f}, {y_inter[0]:.4f})',
xy=(x_inter[0], y_inter[0]), xytext=(-40, 40),
textcoords='offset points', fontsize=8,
arrowprops=dict(arrowstyle='->'))
plt.annotate(f'({x_inter[1]:.4f}, {y_inter[1]:.4f})',
xy=(x_inter[1], y_inter[1]), xytext=(20, -50),
textcoords='offset points', fontsize=8,
arrowprops=dict(arrowstyle='->'))
第六步:添加坐标轴标签
plt.subplot(2,1,1)
plt.ylabel('y1')
plt.subplot(2,1,2)
plt.xlabel('x')
plt.ylabel('y2')
第七步:显示图像
plt.show()
如果我的回答解决了您的问题,请采纳!
引用chatGPT作答,
1.在平面直角坐标系中绘制直线和曲线:
import numpy as np
import matplotlib.pyplot as plt
# 绘制直线和曲线
x = np.linspace(0, 16, 1000)
y1 = x * 30 / 16 # 直线方程
y2 = np.sin(x) # 曲线方程
plt.plot(x, y1, '*r', label='Line')
plt.plot(x, y2, '^g', label='Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
2.使用plt.subplot()创建子图:
import numpy as np
import matplotlib.pyplot as plt
# 定义函数
def func1(x):
return 4 * x**2 - 18 * x + 9
def func2(x):
return 9 / x
# 创建上下两个子图
plt.subplot(2, 1, 1)
x = np.linspace(0, 14, 1000)
y1 = func1(x)
plt.plot(x, y1)
plt.title('Function 1')
plt.xlabel('x')
plt.ylabel('y')
plt.subplot(2, 1, 2)
y2 = func2(x)
plt.plot(x, y2)
plt.title('Function 2')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 创建左右两个子图
plt.subplot(1, 2, 1)
x = np.linspace(0, 14, 1000)
y1 = func1(x)
plt.plot(x, y1)
plt.title('Function 1')
plt.xlabel('x')
plt.ylabel('y')
plt.subplot(1, 2, 2)
y2 = func2(x)
plt.plot(x, y2)
plt.title('Function 2')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
3.创建笛卡尔坐标系并标注交点:
import numpy as np
import matplotlib.pyplot as plt
# 定义函数
def func1(x):
return 8 * x
def func2(y):
return np.sqrt(-y**2 / 4)
# 绘制图像
x = np.linspace(-5, 5, 1000)
y1 = func1(x)
y2 = func2(x)
y3 = -y2
plt.plot(x, y1, 'b-', label='y1 = 8x')
plt.plot(x, y2, 'r--', label='y2 = -4x^2')
plt.plot(x, y3, 'r--')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
# 标注交点
x0 = 0
y0 = func1(x0)
plt.annotate('(%s, %s)' % (x0, y0), xy=(x0, y0), xytext=(-40, 40), textcoords='offset points', fontsize=10, arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.show()
不知道你这个问题是否已经解决, 如果还没有解决的话: