python画两条曲线_python 实现将多条曲线画在一幅图上的方法

这篇博客展示了如何使用Python的matplotlib库将四条曲线(DT, M1, M2, M3, M4)绘制到一张图表上。通过读取不同文件的数据并设置颜色、标签和线宽,博主详细解释了如何设置坐标轴范围、刻度间距和图例位置,最终保存为PNG图像。" 80390367,7487975,NOI 2.1 枚举算法解析:鸡兔同笼问题,"['算法', '信息学奥赛', 'C++', '数学']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如下所示:

# -*- coding: utf-8 -*-

"""

Created on Thu Jun 07 09:17:40 2018

@author: yjp

"""

import matplotlib.pyplot as plt

import numpy as np

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

y0 = []

y1 = []

y2 = []

y3 = []

y4 = []

f = open("y0.txt")

lines = f.readlines()

for li in lines:

y0.append(li)

f = open("y1.txt")

lines = f.readlines()

for li in lines:

y1.append(li)

f = open("y2.txt")

lines = f.readlines()

for li in lines:

y2.append(li)

f = open("y3.txt")

lines = f.readlines()

for li in lines:

y3.append(li)

f = open("y4.txt")

lines = f.readlines()

for li in lines:

y4.append(li)

font1 = {'family' : 'Times New Roman',

'weight' : 'normal',

'size' : 9,

}

font2 = {'family' : 'Times New Roman',

'weight' : 'normal',

'size' : 14,

}

figsize = 8, 9

plt.subplots(figsize=figsize) # 设定整张图片大小

ax1 = plt.subplot(4, 1, 1)

ax1.yaxis.set_major_locator(MultipleLocator(15)) # 设定y轴刻度间距

#第一条线

x = range(0, len(y0))

plt.plot(x, y0, color='black', label='$DT$', linewidth=0.8) # 绘制,指定颜色、标签、线宽,标签采用latex格式

plt.ylim(-90, -20) # 设定y轴范围

hl=plt.legend(loc='upper right', prop=font1, frameon=False) # 绘制图例,指定图例位置

#set(hl,'Box','off');

#第二条曲线

x = range(0, len(y1))

plt.plot(x, y1, color='red', label='$M_1$', linewidth=0.8)

plt.legend(loc='upper right', prop=font1, frameon=False) # 绘制图例,指定图例位置

plt.xticks([]) # 去掉x坐标轴刻度

plt.xlim(0, 580) # 设定x轴范围

ax2 = plt.subplot(4, 1, 2)

ax2.yaxis.set_major_locator(MultipleLocator(15))

x = range(0, len(y0))

plt.plot(x, y0, color='black', label='$DT$', linewidth=0.8)

plt.ylim(-90, -20)

hl=plt.legend(loc='upper right', prop=font1, frameon=False)

#set(hl,'Box','off');

x = range(0, len(y2))

plt.plot(x, y2, color='red', label='$M_2$', linewidth=0.8)

plt.legend(loc='upper right', prop=font1, frameon=False)

plt.ylabel("strength/dBm", font2)

plt.xticks([])

plt.xlim(0, 580)

ax3 = plt.subplot(4, 1, 3)

ax3.yaxis.set_major_locator(MultipleLocator(15))

x = range(0, len(y0))

plt.plot(x, y0, color='black', label='$DT$', linewidth=0.8)

hl=plt.legend(loc='upper right', prop=font1, frameon=False)

#set(hl,'Box','off');

plt.ylim(-90, -20)

x = range(0, len(y3))

plt.plot(x, y3, color='red', label='$M_3$', linewidth=0.8)

plt.legend(loc='upper right', prop=font1, frameon=False)

plt.xticks([])

plt.xlim(0, 580)

ax4 = plt.subplot(4, 1, 4)

ax4.yaxis.set_major_locator(MultipleLocator(15))

ax4.xaxis.set_major_locator(MultipleLocator(50))

x = range(0, len(y0))

plt.plot(x, y0, color='black', label='$DT$', linewidth=0.8)

plt.ylim(-90, -20)

hl=plt.legend(loc='upper right', prop=font1, frameon=False)

#set(hl,'Box','off');

x = range(0, len(y4))

plt.plot(x, y4, color='red', label='$M_4$', linewidth=0.8)

plt.legend(loc='upper right', prop=font1, frameon=False)

plt.xlabel("index of grids in path", font2)

plt.xlim(0, 580)

plt.savefig("1.png", dpi=600))

plt.show()

20190707132819.jpg

以上这篇python 实现将多条曲线画在一幅图上的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

### 将两条曲线绘制在同一个表中 当需要在同一幅上绘制多条曲线时,可以使用 `matplotlib` 库来实现。以下是具体方法和示例代码: #### 方法概述 通过调用多次 `plot()` 函数并将它们叠加在一个坐标轴对象 (`Axes`) 上即可完成操作[^1]。每次调用 `plot()` 都会向当前活动的 Axes 增加一条新线段。此外,还可以设置每条线的不同样式(如颜色、宽度等),并通过 `legend()` 函数为各条线提供标注说明。 --- #### 示例代码:绘制两条正弦波与余弦波曲线 以下是一份完整的 Python 脚本,演示如何将两条不同的数学函数曲线放在同一张表内显示出来[^2]。 ```python import numpy as np import matplotlib.pyplot as plt # 定义自变量范围 x = np.linspace(0, 2 * np.pi, 500) # 计算因变量值 y_sin = np.sin(x) y_cos = np.cos(x) # 创建布及单个子区域 fig, ax = plt.subplots() # 绘制第一条曲线 - 正弦波 ax.plot(x, y_sin, label='sin(x)', color='red', linestyle='-', linewidth=2) # 绘制第二条曲线 - 余弦波 ax.plot(x, y_cos, label='cos(x)', color='blue', linestyle='--', linewidth=2) # 添加标题与坐标轴名称 ax.set_title('Sine and Cosine Waves on the Same Plot') ax.set_xlabel('Angle [radians]') ax.set_ylabel('Amplitude') # 启用网格功能方便阅读数值关系 ax.grid(True) # 插入例帮助识别哪条线对应哪个表达式 ax.legend(loc='upper right') # 显示最终成果 plt.show() ``` 上述代码实现了如下几个要点: - 利用了 NumPy 自动生成一系列均匀分布的角度样本点; - 分别计算了这些角度对应的 sin 和 cos 结果作为纵坐标的依据; - 设置了两种截然不同的视觉风格区分两组数据序列; - 加上了必要的文字描述辅助理解整个形含义;最后还加入了指导性的网格背景提升观感体验[^2]. --- #### 进一步定制化选项 除了基本配置外,还有许多额外属性可用于进一步美化您的多重曲线: - **改变线条类型**: 支持实线(-),虚线(--), 点划线(-.), 或者仅由圆圈(o)组成的散点连线模式. - **调节透明度(alpha)**: 数字越接近零表示越淡薄; 接近一则是完全不透光状态. - **增加阴影效果(fill_between())**: 可突出某区间内的差异程度. 例如修改部分参数后的版本如下所示: ```python ... ax.fill_between(x, y_sin, y_cos, where=(y_sin >= y_cos), interpolate=True, facecolor='green', alpha=.3) ax.fill_between(x, y_sin, y_cos, where=(y_sin < y_cos), interpolate=True, facecolor='orange', alpha=.3) ... ``` 这将在两条曲线下方填充绿色或橙色渐变区带,直观反映两者间的高低起伏状况[^3]. --- ### 注意事项 - 若两条曲线的数据量级差距较大,则需考虑采用双 Y 轴布局方式呈现更多信息而不失真。 - 形尺寸比例应适当选取以免造成误导性解读结论的现象发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值