欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django上使用數(shù)據(jù)可視化利器Bokeh解析

 更新時(shí)間:2019年07月31日 10:54:15   作者:柴柴土  
這篇文章主要介紹了Django上使用數(shù)據(jù)可視化利器Bokeh解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

最近在實(shí)驗(yàn)室做的一個(gè)項(xiàng)目中,需要把大量的數(shù)據(jù)在 web 端進(jìn)行可視化,需要繪制各類(lèi)圖表。數(shù)據(jù)都是以 csv 文件的形式保存在服務(wù)器中。本來(lái)是想使用 D3.js 這個(gè)數(shù)據(jù)可視化前端庫(kù)來(lái)畫(huà)圖,但是需要編寫(xiě)大量的 js 代碼。后來(lái)發(fā)現(xiàn)了 Bokeh 這個(gè)框架,只需要在后端編寫(xiě)及少量的 Python 代碼生成對(duì)應(yīng)的 html 與 js,再傳送到前端讓瀏覽器解析,大大的減少了工作量。

1. 波形圖

這里繪制一個(gè)包含了數(shù)千個(gè)數(shù)據(jù)點(diǎn)的信號(hào)波形圖,繪制方法和 Matlab 如出一轍。學(xué)習(xí)成本為零。

import pandas as pd
from bokeh.plotting import figure
from bokeh.io import output_file, show

csv_file = 'points.csv'
data = pd.read_csv(csv_file)
TOOLS = 'hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select'
picture = figure(width=1000, height=400, tools=TOOLS)
picture.line(data['order'], data['value'], color='blue', alpha=0.5)
output_file('waveform.html', title='waveform')
show(picture)

points.csv 中包含了 2048 個(gè)點(diǎn)。上面這段腳本是直接生成了一個(gè) html 文件,show(picture)語(yǔ)句打開(kāi)了這個(gè) html 文件。效果如下:

右側(cè)的工具欄是通過(guò)TOOLS = 'hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select'設(shè)置的。包含了常見(jiàn)的一些功能,包括縮放,保存,重置等等。由于簡(jiǎn)書(shū)的 markdown 不支持直接插入 div 塊和 js 腳本,所以只能截取一個(gè)圖放在這里,不能體驗(yàn)到右側(cè)的工具欄的使用感受。

2. 集成到 Django 中

上面的例子是直接生成了一個(gè) html 文件,但在正常的使用中,只應(yīng)該生成對(duì)應(yīng)的 div 和 js 就行了。
在 Django 的 view.py 中,定義一個(gè) view。

def waveform(request):
  csv_file = 'your file'
  data = pd.read_csv(csv_file) 
  TOOLS = "hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select"
  picture = figure(width=1200, height=400, tools=TOOLS) 
  picture.line(data['order'], data['value'], color='blue', alpha=0.5)
  script, div = components(picture, CDN)
  return render(request, 'waveform.html', {'script': script, 'div': div})

這樣就把對(duì)應(yīng)的 template 的 waveform.html 中:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Experiment with Bokeh</title>
  <link href="{% static 'bokeh-0.12.4.min.css' %}" rel="stylesheet" type="text/css">
  <link href="{% static 'bokeh-widgets-0.12.4.min.css' %}" rel="stylesheet" type="text/css">
  <script src="{% static 'bokeh-0.12.4.min.js' %}"></script>
  <script src="{% static 'bokeh-widgets-0.12.4.min.js' %}"></script>
  {{ script |safe }}
</head>
<body>
{{ div |safe }}
</body>
</html>

這里有一個(gè)不太好的地方,把 script 放到了 head 里面。

然而要是放在底部。就不能正確畫(huà)出圖了。(求大神解答)

3. 時(shí)頻圖

在經(jīng)過(guò)短時(shí)傅里葉變換輸出的結(jié)果,可以用 image 來(lái)顯示時(shí)頻分布圖。與 Matlab 畫(huà)出來(lái)的也是如出一轍。

import numpy as np
import pandas as pd
from bokeh.io import output_file, show
from bokeh.plotting import figure
data = pd.read_csv('tf_stft.csv')
value = np.array(data['value'])
d = np.reshape(value, (338, 124))
d = np.transpose(d)
TOOLS = "hover,crosshair,pan,wheel_zoom,box_zoom,reset,save,box_select"
p = figure(x_range=(0, 62), y_range=(0, 169), tools=TOOLS)
p.image(image=[d], x=0, y=0, dw=62, dh=169, palette="Viridis256")
output_file("image.html", title="image.py example")
show(p)

結(jié)果如下:

如果是使用 D3.js 來(lái)繪制這個(gè)圖形的話(huà),就比較費(fèi)勁了。

4. 小結(jié)

Bokeh 這個(gè)框架,比起 D3.js,它的可視化選項(xiàng)相對(duì)較少。因此,目前來(lái)看 Bokeh 無(wú)法挑戰(zhàn) D3.js 的霸主地位。而且 Bokeh 過(guò)于依賴(lài) python 的數(shù)值計(jì)算庫(kù),并非一個(gè)純前端的框架,使得它的使用范圍也小于 D3.js。

而在純 python 的數(shù)值計(jì)算領(lǐng)域,也已經(jīng)有 matplotlib 這種提供了與 Matlab 一模一樣的接口的數(shù)據(jù)可視化庫(kù),Bokeh 的適用場(chǎng)景也并不多。
但是,它非常適合嵌入 Flask 或者 Django 的程序中,非常好用,速度也很快。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python圖片處理之圖片采樣處理詳解

    Python圖片處理之圖片采樣處理詳解

    這篇文章將詳細(xì)為大家講解圖像采樣處理,包括原理知識(shí)、代碼實(shí)現(xiàn)和局部馬賽克處理。文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編一起動(dòng)手試一試
    2022-02-02
  • python實(shí)現(xiàn)掃描ip地址的小程序

    python實(shí)現(xiàn)掃描ip地址的小程序

    本文通過(guò)實(shí)例代碼給大家介紹了python實(shí)現(xiàn)掃描ip地址的小程序,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-04-04
  • Python分析學(xué)校四六級(jí)過(guò)關(guān)情況

    Python分析學(xué)校四六級(jí)過(guò)關(guān)情況

    這篇文章主要為大家詳細(xì)介紹了利用Python分析學(xué)校四六級(jí)過(guò)關(guān)情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 說(shuō)說(shuō)如何遍歷Python列表的方法示例

    說(shuō)說(shuō)如何遍歷Python列表的方法示例

    這篇文章主要介紹了如何遍歷Python列表的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • python @classmethod 的使用場(chǎng)合詳解

    python @classmethod 的使用場(chǎng)合詳解

    這篇文章主要介紹了python @classmethod 的使用場(chǎng)合詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python構(gòu)造IP報(bào)文實(shí)例

    python構(gòu)造IP報(bào)文實(shí)例

    這篇文章主要介紹了python構(gòu)造IP報(bào)文實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • PyCharm最新激活碼(2020/10/27全網(wǎng)最新)

    PyCharm最新激活碼(2020/10/27全網(wǎng)最新)

    Pycharm最新激活碼全網(wǎng)最新(2020/10/27更新),適用Intellij idea 2020.2.x,WebStorm 2020.2.x,Pycharm 2020.2.x
    2020-10-10
  • Django中Model的使用方法教程

    Django中Model的使用方法教程

    最近學(xué)習(xí)了一下Django文檔的model部分,通過(guò)學(xué)習(xí)的內(nèi)容整理了這篇文章,下面這篇文章主要給大家介紹了關(guān)于Django中Model的使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 零基礎(chǔ)寫(xiě)python爬蟲(chóng)之使用urllib2組件抓取網(wǎng)頁(yè)內(nèi)容

    零基礎(chǔ)寫(xiě)python爬蟲(chóng)之使用urllib2組件抓取網(wǎng)頁(yè)內(nèi)容

    文章詳細(xì)介紹了在python2.5環(huán)境下,如何使用urllib2這個(gè)python自帶的組件進(jìn)行抓取指定網(wǎng)頁(yè)內(nèi)容的,整個(gè)過(guò)程記錄的非常的詳細(xì),也很簡(jiǎn)單,有需要的朋友可以參考下,寫(xiě)出自己的python爬蟲(chóng)
    2014-11-11
  • Python繪制動(dòng)態(tài)的521玫瑰花

    Python繪制動(dòng)態(tài)的521玫瑰花

    敲了這么多年代碼,每年都得畫(huà)一些心啊花啊什么的,所以現(xiàn)在常規(guī)的已經(jīng)有些倦怠了,至少也得來(lái)個(gè)三維圖形才看著比較合理,所以本文就來(lái)繪制一個(gè)動(dòng)態(tài)的玫瑰花吧
    2023-05-05

最新評(píng)論