当前位置:   article > 正文

「Python+Django」在网页实现天气数据可视化(气温变化图和天气词云)_天气可视化分析python并生成html

天气可视化分析python并生成html

1 描述

通过 python 作为后端,运用django框架,将天气数据可视化。包括:

  1. 气温变化趋势图,显示某个城市某年的气温变化或城市某年某月的气温变化(最高温和最低温);
  2. 天气词云,显示某城市,某年、某年某月、近几年的天气情况,可视化地表示哪种天气出现的多。

实现效果:

python+django实现天气数据可视化

2 代码

2.1 django模型

只定义了一个记录模型:

class Record(models.Model):
    id = models.IntegerField(verbose_name="记录id", primary_key=True)
    date = models.DateField(verbose_name="日期")
    week = models.CharField(verbose_name="星期", max_length=255)
    maxtemp = models.FloatField(verbose_name="最高气温")
    mintemp = models.FloatField(verbose_name="最低气温")
    weather = models.CharField(verbose_name="天气", max_length=255)
    wind = models.CharField(verbose_name="风向", max_length=255)
    city = models.CharField(verbose_name="城市", max_length=255)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.2 django视图

只需要学会基本的使用django的方法,加上python的基本知识,就能实现这个系统功能。由于文件较多,又存在诸多重复,且代码比较简单,就不一一列举了,以下用伪代码的方式展示,实现方法。

2.2.1 index首页
def index(request):
    return render(request, 'index.html')
  • 1
  • 2
2.2.2 datachart 图表页(伪代码)
def datachart(request, city, year):
    figtitle = ""										# 图表标题
    fig = plt.figure(figsize=(16, 8))	# 定义画布
    ax = fig.add_subplot(111)					# 初始化一个图
		
		date = 从数据库读取 日期 == year 的所有日期
		min_temp = 从数据库读取 城市 == city 且日期 == year 的全部最低气温
		max_temp = 从数据库读取 城市 == city 且日期 == year 的全部最高气温

		# 画图
    ax.plot(date,min_temp,label="最低气温")
    ax.plot(date,max_temp,label="最高气温")
    
    # 构造返回值
    context = {"image": data,					# 图表
               "city": city,					# 城市
               "figtitle": figtitle,		# 图标题
               "citylist": city_list,	# 城市列表
               }
    return render(request, 'datachart.html', context=context)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
2.2.3 wordscloud 词云页(伪代码)
def wordscloud(request, city, year):
    city = eval(city)
    year = eval(year)
    month = request.GET.get('month')

		# 处理天气词句
		1. 从数据库获取 城市 == city, 日期 == year的全部天气
		2. 对天气数据进行处理,获取到天气类型
		3. 对天气类型进行统计出现次数
		4. 根据统计数量的不同,绘制词云
		5. 将词云返回到模板中
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3 参考

[1]Django文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/709867
推荐阅读
相关标签
  

闽ICP备14008679号