Matplotlib绘制 环状图
时间: 2023-05-16 20:04:51 浏览: 158
Matplotlib是一个Python绘图库,可以通过它绘制各种类型的图表,包括环状图。绘制环状图的方法如下:
1. 首先需要导入Matplotlib库。
2. 使用`pyplot.pie()`函数绘制环状图,并传入需要绘制的数据。
3. 可以使用`pyplot.legend()`函数添加图例。
4. 使用`pyplot.show()`函数显示图表。
示例代码:
``` python
import matplotlib.pyplot as plt
data = [20, 30, 40, 10]
labels = ['A', 'B', 'C', 'D']
plt.pie(data, labels=labels)
plt.legend()
plt.show()
```
这样就可以绘制出一个环状图了。
相关问题
jupyter绘制环状柱状图
在Jupyter Notebook中,你可以使用matplotlib库来创建环形或堆积柱状图,其中最常用的是`plt.pie`函数用于绘制环状图(饼图),而`plt.bar`或`plt.barh`则用来绘制普通或水平的柱状图。如果你想创建一个环形柱状图(即堆叠柱状图中的一部分是圆环区域),可以结合这两个功能。
这里是一个简单的例子:
```python
import matplotlib.pyplot as plt
# 假设我们有三个部分的数据
labels = ['A', 'B', 'C']
sizes = [30, 40, 30] # 每部分的大小
colors = ['#ff9999', '#66b3ff', '#99ff99'] # 颜色选择
# 绘制环形柱状图
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, colors=colors,
wedgeprops=dict(width=0.3), # 控制环宽度
startangle=90, # 旋转起始角度
pctdistance=0.85, # 内外圆的比例
textprops={'color': 'white', 'fontweight': 'bold'}) # 文字样式
# 如果你想添加一个中心的圈形,可以用空白的环
ax.add_artist(plt.Circle((0, 0), 0.7, color='white', fill=False))
ax.set_title('环形柱状图示例')
plt.show()
```
后端是python django连接MySQL数据库水质监测数据(城市 City 、 河流名称 RName、采样日期 SDate、水质类别 WDClasses、 pH PH),前端选择城市(黑龙江省哈尔滨市,吉林省长春市,辽宁省沈阳市)、河流(哈尔滨市选择有呼兰河、松花江、磨盘山水库、牡丹江、拉林河、阿什河,长春市有饮马河、伊通河、双阳河、松花江,沈阳市有浑河,细河,蒲河,辽河)以及采样时间范围,通过后端视图函数获取对应水质类别绘制环状扇形图,具体代码过程
好的,根据您所描述的需求,需要使用 Python 的 Django 框架来连接 MySQL 数据库,并根据前端选择的城市、河流和时间范围获取对应的水质类别数据,并绘制环状扇形图。下面是一个简单的实现过程:
1. 创建 Django 项目和应用
首先需要创建一个 Django 项目和应用,可以在命令行中执行以下命令:
```
django-admin startproject water_quality_monitoring
cd water_quality_monitoring
python manage.py startapp water_quality
```
2. 安装必要的依赖
在项目根目录下的 `requirements.txt` 文件中添加以下依赖:
```
Django==3.2.5
mysqlclient==2.0.3
matplotlib==3.4.2
```
然后在命令行中执行以下命令安装依赖:
```
pip install -r requirements.txt
```
3. 配置数据库连接
在 `water_quality_monitoring/settings.py` 文件中添加以下代码:
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'water_quality_db',
'USER': 'your_mysql_username',
'PASSWORD': 'your_mysql_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
```
其中 `NAME` 是数据库名称,`USER` 和 `PASSWORD` 分别是 MySQL 的用户名和密码,`HOST` 是数据库所在的主机名,`PORT` 是数据库的端口号。
4. 创建模型
在 `water_quality/models.py` 文件中定义一个名为 `WaterQuality` 的模型类,用于表示水质监测数据:
```python
from django.db import models
class WaterQuality(models.Model):
city = models.CharField(max_length=50)
river_name = models.CharField(max_length=50)
sampling_date = models.DateField()
water_quality_class = models.CharField(max_length=50)
ph = models.DecimalField(max_digits=4, decimal_places=2)
```
5. 创建视图函数
在 `water_quality/views.py` 文件中定义一个名为 `draw_pie_chart` 的视图函数,用于获取对应水质类别并绘制环状扇形图:
```python
from django.shortcuts import render
from django.db.models import Count
from django.http import HttpResponse
import matplotlib.pyplot as plt
import io
from .models import WaterQuality
def draw_pie_chart(request):
# 获取前端传递的参数
city = request.GET.get('city')
river_name = request.GET.get('river_name')
start_date = request.GET.get('start_date')
end_date = request.GET.get('end_date')
# 根据参数查询符合条件的水质监测数据
water_qualities = WaterQuality.objects.filter(
city=city,
river_name=river_name,
sampling_date__range=(start_date, end_date)
)
# 统计每个水质类别的数量
counts = water_qualities.values('water_quality_class').annotate(count=Count('id'))
# 绘制环状扇形图
labels = [c['water_quality_class'] for c in counts]
values = [c['count'] for c in counts]
fig, ax = plt.subplots()
ax.pie(values, labels=labels, autopct='%1.1f%%')
ax.set_title('Water Quality Class Distribution')
# 将图像保存到内存中
buf = io.BytesIO()
plt.savefig(buf, format='png')
plt.close(fig)
# 返回图像数据
response = HttpResponse(buf.getvalue(), content_type='image/png')
response['Content-Disposition'] = 'attachment; filename="water_quality.png"'
return response
```
6. 创建 URL 路由
在应用的 `urls.py` 文件中添加以下代码,将 `draw_pie_chart` 视图函数绑定到 URL `water_quality/draw_pie_chart/` 上:
```python
from django.urls import path
from . import views
urlpatterns = [
path('draw_pie_chart/', views.draw_pie_chart, name='draw_pie_chart'),
]
```
7. 创建前端页面
在应用的 `templates` 目录下创建一个名为 `index.html` 的模板文件,用于显示前端页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Water Quality Monitoring</title>
</head>
<body>
<h1>Water Quality Monitoring</h1>
<form action="{% url 'draw_pie_chart' %}" method="get">
<label for="city">City:</label>
<select name="city" id="city">
<option value="哈尔滨市">哈尔滨市</option>
<option value="长春市">长春市</option>
<option value="沈阳市">沈阳市</option>
</select>
<br>
<label for="river_name">River Name:</label>
<select name="river_name" id="river_name">
<option value="呼兰河">呼兰河</option>
<option value="松花江">松花江</option>
<option value="磨盘山水库">磨盘山水库</option>
<option value="牡丹江">牡丹江</option>
<option value="拉林河">拉林河</option>
<option value="阿什河">阿什河</option>
<option value="饮马河">饮马河</option>
<option value="伊通河">伊通河</option>
<option value="双阳河">双阳河</option>
<option value="细河">细河</option>
<option value="蒲河">蒲河</option>
<option value="辽河">辽河</option>
</select>
<br>
<label for="start_date">Start Date:</label>
<input type="date" name="start_date" id="start_date">
<br>
<label for="end_date">End Date:</label>
<input type="date" name="end_date" id="end_date">
<br><br>
<button type="submit">Draw Pie Chart</button>
</form>
</body>
</html>
```
8. 运行项目
在命令行中执行以下命令启动 Django 开发服务器:
```
python manage.py runserver
```
然后在浏览器中访问 `http://localhost:8000/water_quality/` 即可看到前端页面,选择城市、河流和时间范围后点击“Draw Pie Chart”按钮即可绘制环状扇形图。
注意:为了简化示例代码,没有进行输入验证和错误处理,请根据实际情况添加相应的代码。
阅读全文