最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)行可視化,需要繪制各類圖表。數(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è)圖形的話,就比較費(fèi)勁了。

4. 小結(jié)

Bokeh 這個(gè)框架,比起 D3.js,它的可視化選項(xiàng)相對(duì)較少。因此,目前來(lái)看 Bokeh 無(wú)法挑戰(zhàn) D3.js 的霸主地位。而且 Bokeh 過(guò)于依賴 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?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法

    Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法

    這篇文章主要介紹了Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 在Python的Django框架中用流響應(yīng)生成CSV文件的教程

    在Python的Django框架中用流響應(yīng)生成CSV文件的教程

    這篇文章主要介紹了在Python的Django框架中用流響應(yīng)生成CSV文件的教程,作者特別講到了防止CSV文件中的中文避免出現(xiàn)亂碼等問(wèn)題,需要的朋友可以參考下
    2015-05-05
  • Python3列表內(nèi)置方法大全及示例代碼小結(jié)

    Python3列表內(nèi)置方法大全及示例代碼小結(jié)

    這篇文章主要介紹了Python3列表內(nèi)置方法大全及示例代碼小結(jié),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 手把手帶你用python爬取小姐姐私房照

    手把手帶你用python爬取小姐姐私房照

    這篇文章主要介紹了用python如何爬取小姐姐私房照,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 使用Python編寫(xiě)類UNIX系統(tǒng)的命令行工具的教程

    使用Python編寫(xiě)類UNIX系統(tǒng)的命令行工具的教程

    這篇文章主要介紹了使用Python編寫(xiě)類UNIX系統(tǒng)的命令行工具的教程,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • 利用Pycharm連接服務(wù)器的全過(guò)程記錄

    利用Pycharm連接服務(wù)器的全過(guò)程記錄

    平時(shí)在遠(yuǎn)程連接服務(wù)器,大多數(shù)都是使用 Xshell,其實(shí)對(duì)于經(jīng)常寫(xiě)python的小伙伴,我們還有一個(gè)使用起來(lái)更加方便,就是常用的python集成IED工具Pycharm,這篇文章主要給大家介紹了關(guān)于如何利用Pycharm連接服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • python中subplot大小的設(shè)置步驟

    python中subplot大小的設(shè)置步驟

    matploglib能夠繪制出精美的圖表,有時(shí)候我們希望把一組圖放在一起進(jìn)行比較,就需要用到matplotlib中提供的subplot了,這篇文章主要給大家介紹了關(guān)于python中subplot大小的設(shè)置方法,需要的朋友可以參考下
    2021-06-06
  • 遺傳算法python版

    遺傳算法python版

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)遺傳算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 解決Tkinter中button按鈕未按卻主動(dòng)執(zhí)行command函數(shù)的問(wèn)題

    解決Tkinter中button按鈕未按卻主動(dòng)執(zhí)行command函數(shù)的問(wèn)題

    這篇文章主要介紹了解決Tkinter中button按鈕未按卻主動(dòng)執(zhí)行command函數(shù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python selenium 三種等待方式詳解(必會(huì))

    Python selenium 三種等待方式詳解(必會(huì))

    這篇文章主要介紹了Python selenium 三種等待方式詳解(必會(huì))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09

最新評(píng)論

陆良县| 大足县| 乌兰县| 娱乐| 张北县| 永善县| 壤塘县| 桐梓县| 湖口县| 曲阜市| 洪洞县| 台北市| 湖北省| 京山县| 顺平县| 新平| 昌江| 长沙县| 黄骅市| 黑山县| 景德镇市| 南宫市| 中牟县| 特克斯县| 监利县| 孙吴县| 龙南县| 汨罗市| 隆回县| 河西区| 左权县| 长寿区| 涟源市| 南皮县| 甘孜| 邵东县| 临汾市| 黑水县| 霍林郭勒市| 纳雍县| 固安县|