离心泵的特性曲线绘制

部署运行你感兴趣的模型镜像

 化工原理实验----离心泵的特性曲线

使用python绘图
序号管路流量直管压差泵出口压力泵入口压力电压电流流速直管摩擦阻力系数雷诺数泵的扬程有效功率效率直管摩擦阻力系数
12311.5285.7-17.4380.32.86.279870340.000158868160779.42478.9904384930.5623487810.5281063640.012245952
221.910.7890.7-15.9380.32.85.9795287150.000163972153089.9749.4807173630.5646539390.5302711580.011565266
320.310.1695-14.3380.22.75.5426681690.000179863141905.31839.8981357080.5464450420.532317340.010638057
419.69.7997.4-13.9380.22.75.3515416810.000185913137012.031510.137827230.5403784290.5264075720.010503144
5189.01102.5-12.1380.22.74.9146811350.00020287125827.375910.63423490.5205660030.5071073740.010393939
616.48.18106.3-11380.22.64.477820590.000221873114642.720211.007391550.4909364880.4966378910.009873512
714.27.12110.4-9.3380.22.63.877137340.00025759899263.8187411.403019910.4403573760.4454713870.010625668
813.16.56112.9-8.7380.12.63.5767957150.00027886991574.3679911.650201990.415051320.4199819070.011028531
910.25.06117.8-6.9380.12.52.7849859770.00035480571302.1796612.126181450.3363731190.3539838140.012087622
106.73.32122.7-5.6380.12.41.8293535340.00053954546835.7454612.608969750.2297478490.2518502240.015685474
113.61.78124.2-5380.12.30.9829362270.00100196825165.4751712.754010760.1248666120.142830390.026204072
122.11.07126.2-4.5380.12.30.5733794660.00177004414679.8605212.951484070.0739666380.0846077550.043561865
1300129.4-1.2380.12.200013.2333971600#DIV/0!


watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATXlaaW5HOTk2,size_20,color_FFFFFF,t_70,g_se,x_16

# 绘制时间序列数据的双Y轴图
import pandas as pd
import matplotlib.pyplot as plt

# mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有效
# mpl.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 #interactive mode(选中点F9)有效,script mode(三角形run)无效
import xlrd

plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号 #有效
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签 #interactive mode(选中点F9)有效,script mode(三角形run)无效

# 假设我们有三个series,series1的数据范围和series2、series3的数据范围差异较大,或者scale差异较大,需要双Y轴去画。
workBook = xlrd.open_workbook(r"C:\Users\Taylor\Desktop\1.xls")

# 1.获取sheet的名字
# 1.1 获取所有sheet的名字(list类型)
# allSheetNames = workBook.sheet_names()
# print(allSheetNames)

# 1.2 按索引号获取sheet的名字(string类型)
# sheet1Name = workBook.sheet_names()[0]
# print(sheet1Name)

# 2. 获取sheet内容
## 2.1 法1:按索引号获取sheet内容
sheet1_content1 = workBook.sheet_by_index(0)  # sheet索引从0开始
## 2.2 法2:按sheet名字获取sheet内容
# sheet1_content2 = workBook.sheet_by_name('Sheet1')

# 3. sheet的名称,行数,列数
# print(sheet1_content1.nrows,sheet1_content1.ncols)

# 4. 获取整行和整列的值(数组)
#   rows = sheet1_content1.row_values(3)# 获取第四行内容
cols = sheet1_content1.col_values(1, start_rowx=1)  # 获取第三列内容
x = cols
y1 = sheet1_content1.col_values(10, start_rowx=1)
y2 = sheet1_content1.col_values(12, start_rowx=1)
Y = sheet1_content1.col_values(11, start_rowx=1)
x1 = sheet1_content1.col_values(9, start_rowx=1)
y3 = sheet1_content1.col_values(8, start_rowx=1)
# plt.plot(x1,y3,"m-*")
# print(x1,y3)
fig, right_axis = plt.subplots(figsize=(8, 6))
# 建立一个大型的空白图。
# 这是用了plt包的method。
# series1.plot(color='red')
# 画第一条时间序列数据,左轴。
# 这个是用了pd包的method plot。
# plt.legend(labels=[u"series1曲线名字_左轴"], loc='upper left', fontsize=16)
# 加上左轴曲线画的时间序列名称
# 曲线名字后面加上左轴,表示该颜色曲线刻度在左边。
# 左轴的legend放在左边,下面右轴的legend可以放在右边。不要放在同一个位置就可以。可以自己安排。

# 开始画右轴,画两条曲线
left_axis = right_axis.twinx()
right_axis.plot(x, y1, 'm--', marker='^', label="Q-H")
right_axis.text(22.03,10,"Q-H")

left_axis.plot(x, y2, color='r', marker="*", label="Q-η")
left_axis.text(22.48,0.589,"Q-η")

plt.plot(x, Y, marker="o", label="Q-N")
plt.text(22.05,0.500,s="Q-N")
#    添加离心泵的参数
plt.text(14.5,0.9,s="型号:TVPEY-EM2\n转速n=2840r/min",ha="center")
right_axis.set_ylim(0, 14)
# left_axis.set_yticks(np.arange(0, 1201, 200))
left_axis.set_ylim(0, 1)
# right_axis.set_yticks(np.arange(0, 1.01, 0.20))

# 设置坐标及标题的大小、颜色
left_axis.set_title('离心泵的特性曲线')
xlab = left_axis.set_xlabel('Q(m³/h)')

#双Y轴的颜色,及其坐标名称
l_ylab = left_axis.set_ylabel('η||(kw)', color='r')
right_axis.tick_params(axis='y', colors='b')


r_ylab = right_axis.set_ylabel('H(m)', color='b')
left_axis.tick_params(axis='y', colors='r')
# lns = r_ylab + l_ylab + xlab
# labs = [l.get_label() for l in lns]
plt.legend()
plt.grid()
# label = [u"流量", u"效率"]

plt.show()

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATXlaaW5HOTk2,size_20,color_FFFFFF,t_70,g_se,x_16

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>好的,我现在需要帮助用户解决如何使用Python绘制离心泵特性曲线的问题。首先,用户提到了使用matplotlib或numpy,所以我应该考虑这两个库的应用。离心泵特性曲线通常包括扬程、效率、功率与流量之间的关系,因此需要展示多组数据曲线。 首先,我需要确定用户可能有的数据格式。通常,这些数据可能存储在CSV或Excel文件中,所以可能需要用pandas来读取数据。但用户没有明确提到数据来源,所以示例代码可能需要包含生成模拟数据的部分,或者从文件读取的示例。接下来,绘制曲线需要用到matplotlib.pyplot。用户可能需要多条曲线在同一图中,或者分开展示。考虑到特性曲线一般是多条曲线在同一图上,使用不同的线型或颜色来区分。例如,扬程-流量、效率-流量、功率-流量曲线可能在同一坐标系中,但可能需要不同的纵坐标轴,因为它们的量纲不同。 另外,可能需要设置图表标题、坐标轴标签、图例等,使图表清晰易懂。还需要考虑数据点的平滑处理,比如使用numpy的polyfit进行多项式拟合,或使用scipy的插值方法生成平滑曲线。但用户没有提到是否需要平滑,所以示例代码可能需要包含原始数据点连线和拟合曲线的两种方式,供用户选择。然后,考虑到用户可能对Python库不熟悉,代码示例需要注释清晰,步骤明确。例如,先导入必要的库,生成或加载数据,处理数据,绘制图表,最后显示或保存图表。 还需要检查是否有引用内容相关。查看用户提供的引用,引用[1]中有关于喷洒报告的代码,使用了pandas和matplotlib,这可能与数据处理和绘图相关,可以借鉴数据处理的步骤。引用[2]中的TensorFlow代码可能不相关,但引用[3]提到Python的缩进问题,需要注意代码格式正确。用户的问题可能涉及如何将实际测量的流量、扬程等数据转换为曲线,所以示例代码可能需要包括模拟数据的生成,比如使用numpy生成流量数组,然后根据公式计算扬程和效率等。例如,扬程可能随流量增加而下降,效率曲线可能有最高点,功率随流量增加而上升,这些可以通过公式模拟。 最后,需要确保代码正确,语法无误,比如正确使用matplotlib的绘图函数,数据列的名称正确,避免常见的错误如列名错误或数据维度不匹配。同时,添加相关的优化建议,比如图像美化、数据拟合、交互式图表等,帮助用户进一步改进。 总结步骤:1.导入必要的库(numpy,matplotlib, pandas)。 2.创建模拟数据或加载外部数据。3.数据处理(如计算效率、功率等,如果需要)。 4.绘制多条曲线,设置图表元素。 5.显示或保存图表。 6.提供优化建议和相关问题。</think>### 离心泵特性曲线绘制方法 离心泵特性曲线通常包含**流量(Q)-扬程(H)**、**流量(Q)-效率(η)**、**流量(Q)-功率(P)**三组关系曲线。以下为使用Python绘制的完整实现方法: ```python import numpy as np import matplotlib.pyplot as plt # 1. 生成模拟数据 Q = np.linspace(0, 100, 20) # 流量范围0-100 m³/h H = 80 - 0.05*Q**2 # 扬程随流量变化的二次函数 η = 0.8*Q - 0.005*Q**2 # 效率曲线(抛物线) P = 50 + 0.2*Q + 0.001*Q**3 # 功率曲线 # 2. 创建画布和坐标系 fig, ax1 = plt.subplots(figsize=(10, 6)) # 3. 绘制主坐标轴曲线(Q-H) ax1.set_xlabel('流量 Q (m³/h)', fontsize=12) ax1.set_ylabel('扬程 H (m)', color='tab:blue') ax1.plot(Q, H, 'b-o', label='扬程曲线') ax1.tick_params(axis='y', labelcolor='tab:blue') # 4. 创建次坐标轴(Q-η/Q-P) ax2 = ax1.twinx() ax2.set_ylabel('效率 η(%) / 功率 P(kW)', color='tab:red') ax2.plot(Q, η, 'r--s', label='效率曲线') ax2.plot(Q, P, 'g-.D', label='功率曲线') ax2.tick_params(axis='y', labelcolor='tab:red') # 5. 图表优化 plt.title('离心泵特性曲线', fontsize=14) ax1.grid(linestyle='--', alpha=0.7) fig.legend(loc='upper right', bbox_to_anchor=(0.9, 0.85)) plt.tight_layout() plt.show() ``` ### 代码解析 1. **数据模拟**:使用`numpy`生成流量数据,通过二次函数模拟特性曲线变化规律 2. **双坐标轴**:通过`twinx()`创建次坐标轴,实现不同量纲曲线的同图展示 3. **可视化优化**: - 不同线型(`-o`, `--s`, `-.D`)区分曲线 - 颜色编码区分主次坐标轴 - 网格线增强可读性 ### 实际应用建议 1. **数据加载**:若使用实测数据,可通过`pandas`读取CSV/Excel文件: ```python import pandas as pd df = pd.read_csv('pump_data.csv') Q = df['Flow'] H = df['Head'] ``` 2. **曲线拟合**:对离散数据点进行多项式拟合: ```python coefficients = np.polyfit(Q, H, 2) H_fit = np.polyval(coefficients, Q) ``` 3. **三维可视化**:使用`mpl_toolkits`绘制Q-H-η三维曲面图[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值