使用django实现plt.show()展示的图显示到前端页面

win+R打开终端

1.创建虚拟环境

cd /d F:\djangotest

python -m venv djangoenv

2.激活虚拟环境

目录切到djangoenv/Scripts下

activate

3.创建django项目

cd ../..

django-admin startproject data_visualization

4.创建app

cd data_visualization

python manage.py startapp visualization

至此项目应用就创建好了,可以使用pip install django==2.2安装

实现功能

1.配置settings

在INSTALLED_APPS中添加应用

指定模板位置

2.设置urls

在总的urls文件中指定应用

 

 在应用的urls中指定请求执行的路径

 3.编写views.py

import base64
import io
from django.shortcuts import render

# Create your views here.
import pandas as pd
from pymongo import MongoClient
import matplotlib.pyplot as plt
import numpy as np
client = MongoClient(host='192.168.2.220',port=27017)
#指定数据库
mydb = client['ztcm_bid']
col = mydb['ccgp_feibiao']
original_data = pd.DataFrame(col.find())
# print("original_data=",original_data)

def draw_bar(request):
    mydb = client['ztcm_bid']
    col = mydb['ccgp_feibiao']
    df = pd.DataFrame(col.find())
    df1 = df.replace("", np.nan).replace("/", np.nan)
    x = np.array([df.columns[5], df.columns[6], df.columns[13], df.columns[15]])
    print("x=", x, sep='\n')
    counts = np.array([df1['title'].count(), df1['project_number'].count(), df1['project_contact_number'].count(),
                       df1['purchase_address'].count()])
    print("counts=", counts, sep='\n')
    # 第一个参数是x轴的数据,第二个参数是y轴的数据,第三个参数是柱子的大小,默认值是1(值在0到1之间),color是柱子的颜色,alpha是柱子的透明度
    plt.bar(x, counts,0.8, color='r', alpha=0.8)
    # 为每个条形图添加数值标签
    for x, y in enumerate(counts):
        plt.text(x, y + 50, '%s' % y, ha='center')
    plt.xticks(rotation=-20)
    img = io.BytesIO()
    plt.savefig(img,format='png')
    img.seek(0)
    plot_url = base64.b64encode(img.getvalue()).decode()
    print("plot_url=",plot_url)
    # plt.show()
    args = {"plot_url":plot_url}
    return render(request,'draw_bar.html',args)

4.在项目下新建目录templates

 5.启动项目

在terminal中输入

python manage.py runserver

6.在新页面中打开

http://localhost:8000/visualization/draw_bar/

 

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值