用python对污水厂一年365天进水量的数据绘制散点图,并在春夏秋冬四季分界处分别画一条虚线
时间: 2024-04-30 21:17:13 浏览: 131
基于python的散点图绘制与实现
好的,这是一个数据可视化的问题,你可以参考以下步骤来完成:
1. 导入必要的库,如 matplotlib 和 pandas。
2. 读取进水量数据,将数据转化成 pandas.DataFrame 格式。假如进水量数据文件名为“inflow.csv”,可以使用以下代码读取:
```python
import pandas as pd
df = pd.read_csv('inflow.csv', header=None, names=['date', 'inflow'])
```
其中,`header=None` 表示文件中没有表头,`names=['date', 'inflow']` 表示我们指定了两列名称,分别是日期和进水量。
3. 对日期进行格式化处理,以便后续作图。可以使用 pandas 自带的 `to_datetime` 函数将字符串类型的日期转化成日期时间格式,并将其设为 DataFrame 的索引:
```python
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df.set_index('date', inplace=True)
```
4. 将数据按季节分组,并计算季节的平均进水量:
```python
season_group = df.groupby(pd.Grouper(freq='QS-DEC'))
season_mean = season_group.mean()
```
这里使用了 pandas 的 `pd.Grouper` 函数对数据进行分组,按年度末为分组时间点,即以 1 月、4 月、7 月和 10 月作为季节分界点。
5. 绘制散点图和分界线。首先绘制散点图:
```python
import matplotlib.pyplot as plt
plt.scatter(df.index, df['inflow'], s=2, alpha=0.5)
```
其中,`s=2` 表示散点的大小,`alpha=0.5`表示散点的透明度。
然后分别在四季分界处画虚线:
```python
for i in range(len(season_mean)):
plt.axvline(x=season_mean.index[i], linestyle='--', color='grey')
```
其中,`axvline` 表示画竖线,`x` 表示线的位置,即季节平均值所在的日期,`linestyle='--'` 表示虚线,`color='grey'` 表示线的颜色为灰色。
6. 最后,加入图表标题和 x,y 轴标签等信息,可形成完整的代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('inflow.csv', header=None, names=['date', 'inflow'])
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df.set_index('date', inplace=True)
season_group = df.groupby(pd.Grouper(freq='QS-DEC'))
season_mean = season_group.mean()
plt.scatter(df.index, df['inflow'], s=2, alpha=0.5)
for i in range(len(season_mean)):
plt.axvline(x=season_mean.index[i], linestyle='--', color='grey')
plt.title('Inflow volume of wastewater treatment plant in a year')
plt.xlabel('Date')
plt.ylabel('Inflow volume (m³/day)')
plt.show()
```
运行代码,会得到一个绘制有进水量散点图以及四季分界虚线的图表。
阅读全文