App下載

怎么在Django中Pyecharts生成圖表

素質(zhì)教育的漏網(wǎng)之魚(yú) 2021-08-18 10:36:42 瀏覽數(shù) (3459)
反饋

在數(shù)據(jù)可視化中,我們可以使用一些類(lèi)似pyecharts來(lái)生成圖表。但如果我們想在網(wǎng)頁(yè)中進(jìn)行數(shù)據(jù)可視化,還需要Django的支持。那么怎么在Django中Pyecharts生成圖表呢?接下來(lái)的這篇文章帶你了解。

因?yàn)閜yecharts是支持python的一種可視化,但是想要將其放入網(wǎng)頁(yè)中,主要有兩種方法

(1)在網(wǎng)頁(yè)中假如iframe,將網(wǎng)頁(yè)嵌在iframe中(該方法不具體描述)

(2)使用json傳輸?shù)角岸?,?duì)其進(jìn)行展示

具體描述第2種方法如下:

假設(shè)用pyecharts畫(huà)一張折線圖

def line():
    attr = ['教師', '教授', '副教授', '博導(dǎo)', '碩導(dǎo)', '國(guó)家級(jí)獎(jiǎng)項(xiàng)', '省部級(jí)獎(jiǎng)項(xiàng)', '院士', '榮譽(yù)學(xué)者', '專(zhuān)利']
    v1 = [100, 20, 15, 50, 40, 200, 200, 4, 5, 100]
    v2 = [150, 30, 40, 50, 30, 250, 200, 1, 2, 110]
    line = Line(width=1834, height=400)
    line.add('北京大學(xué)', attr, v1,
             mark_point=['average', 'max', 'min'],  # 標(biāo)注點(diǎn):平均值,最大值,最小值
             mark_point_symbol='diamond',  # 標(biāo)注點(diǎn):鉆石形狀
             mark_point_textcolor='#40ff27')  # 標(biāo)注點(diǎn):標(biāo)注文本顏色
    line.add('清華大學(xué)', attr, v2,
             mark_point=['average', 'max', 'min'],
             mark_point_symbol='arrow',
             xaxis_name_size=20,
             yaxis_name_size=20,
             )
    return line

具體的圖標(biāo)如圖所示:

在這里插入圖片描述

接下來(lái),想要用其傳到前端,進(jìn)行顯示,需要在Django的app的views.py中添加代碼。

def university_picture(request):
        template = loader.get_template('search/test.html')
        l = line() 			#生成圖像實(shí)例
        context = dict(
            myechart=l.render_embed(),  #必須要有
            host=REMOTE_HOST,	#若前端加載了對(duì)應(yīng)的echarts庫(kù),可以不需要這一句和下一句
            script_list=l.get_js_dependencies(),#以上兩句代碼的目的是下載該圖標(biāo)對(duì)應(yīng)的一些echarts庫(kù)
        )
        return HttpResponse(template.render(context, request))

后端代碼在這里就介紹完,底下需要介紹一下前端的代碼。
前端第一步,加載頭文件:

{% for jsfile_name in script_list %}
<script type="text/javascript" src="https://atts.w3cschool.cn/attachments/{{ jsfile_name }}.js"></script>
{% endfor %}

第二步,將圖標(biāo)顯示出來(lái)(注:以下代碼的class以及id,可以根據(jù)自己的網(wǎng)頁(yè)結(jié)構(gòu)進(jìn)行替換,不需要相同)

<div class="row placeholders" id="pic">
                {{myechart|safe}}
</div>

Pyecharts的圖表在Django中顯示的功能模塊,就介紹完了,下面展示一下,使用ajax+pyecharts+Django實(shí)現(xiàn)的異步刷新圖表(注:不要太在意數(shù)據(jù)的真實(shí)性):

在這里插入圖片描述

到此這篇怎么在Django中Pyecharts生成圖表的文章就介紹到這了,希望能給各位帶來(lái)幫助,也希望大家以后多多支持W3Cschool!


0 人點(diǎn)贊