bootstrap 有統計圖專題及常見問題 - CSDN

2021-01-07 CSDN技術社區

就是在dashboard首頁有個圖表統計直觀展示一些數據,本例用的是用戶的角色及統計。

圖上信息可以看到,用戶100個,四種角色以及角色的人數和佔比,以此類推可以統計一些其他的信息。以下我嘗試簡單的闡述一下實現:

文件結構


這裡只是藍圖的結構,主要用到的是views.py視圖函數,models.py定義Dashboard類,提供一些查詢方法,以及模板文件dashboard.html。

views.py視圖函數

@admin.route('')def dashboard(): group_and_count_users = Dashboard.group_and_count_users() return render_template('admin/page/dashboard.html', group_and_count_users=group_and_count_users)

可以看到視圖函數非常簡單,因為展示的數據內容也不提供什麼其他操作,所以只是簡單的返回一個模板文件。我們只要關注傳入的group_and_count_users這個參數就可以了,這是展示內容所需的數據,來自於資料庫的查詢。

Dashboard

from sqlalchemy import funcfrom pms.blueprints.user.models import User, dbclass Dashboard(object): @classmethod def group_and_count_users(cls): """ 執行分組/統計所有用戶數量 :return: dict """ return cls._group_and_count(User, User.role) @classmethod def _group_and_count(cls, model, field): """ 根據指定的model和field統計。 :param model: Name of the model :type model: SQLAlchemy model :param field: Name of the field to group on :type field: SQLAlchemy field :return: dict """ count = func.count(field) query = db.session.query(count, field).group_by(field).all() results = { 'query': query, 'total': model.query.count() } return results

Dashboard類下定義了兩個classmethod,一個是group_and_count_users,其實只是調用了_group_and_count這個方法,傳入指定的model和field去查詢數據。這樣做是方便以後可以添加其他的方法,比如對Billing,Payments等的查詢統計,只要傳入對應的model和field就可以了。

對於sqlalchemy的用法不清楚的可以查詢官方文檔,或者自己定義一個簡單的User類,然後列印一下query的內容方便理解。

# 得到(數量, field)tuple 的列表query = db.session.query(count, field).group_by(field).all()

這裡重點看下這行,因為它就是我們統計百分比需要的重點數據,各個角色及對應的數量,這句查詢就是根據角色分組並統計相應的數量,返回結果是一個list,中間是由(COUNT,ROLE)這樣形式的tuple構成的。這樣我們返回的results這個dict就包含了我們統計想要的數據了。

將這些數據傳入模板後,就要靠bootstrap來處理了。

dashboard.html

為了方便我用# 直接在代碼中注釋需要關注的內容。更多可以這裡的講解。

{% extends 'layouts/app.html' %}{% block body %} <div class="row"> <div class="col-md-4"> # 創建一個基本面板 <div class="panel panel-default"> # 添加面板標題 <div class="panel-heading"> <a href="{{ url_for('admin.index') }}">Users</a> # 靠右對齊用戶數量的值 <span class="pull-right text-muted"> {{ group_and_count_users.total }} </span> </div> # 面板內容 <div class="panel-body"> # 遍歷傳入的group_and_count_users參數,query鍵對應角色數據count,field {% for item in group_and_count_users.query %} # 計算percent的值,並用round過濾器保留整數部分 {% set percent = ((item[0] / group_and_count_users.total) * 100) | round %} <h5> # 獲取role,並用title過濾器大寫首字母 {{ item[1] | title}} # role的數量 <span class="text-muted">({{ item[0] }})</span> </h5> # progress是bootstrap提供的進度條,progress-striped條紋可選可選,active動畫效果可選 <div class="progress progress-striped active"> # 當前進度,最小進度,最大進度,style為佔有寬度百分比 <div class="progress-bar" role="progressbar" aria-valuenow="{{ percent }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ percent }}%;"> {{ percent }}% </div> </div> {% endfor %} </div> </div> </div> </div>{% endblock %}

總結所有的流程就是,通過視圖函數獲得展示所需的數據並傳入模板文件,通過jinja2和bootstrap提供的panel面板及progress進度條組件展示效果。這種模式還常見於評分系統的分數分布。

相關焦點

  • 卡方檢驗結果分析專題及常見問題 - CSDN
    其中卡方分析的原假設是觀察頻數與期望頻數無差別,所以說當p值顯著時,則拒絕原假設,認為二者之間有明顯差異。總而言之,卡方分析即是用來判斷兩個樣本間的差異程度,從而推斷兩個變量之間有沒有關係。一般常見的卡方分析是2x2列聯表形式,例如服用某種藥物是否對死亡率有影響:(自己編的數據)簡單統計之後,得到總數和死亡率:原假設是:服藥組和未服藥組之間頻數無顯著差異(服藥對死亡率無影響)先計算自由度:(行數-1)*(列數-1)=1這個是卡方的計算公式,R代表實際值,T代表理論值,理論值需要進一步計算才可以知道。
  • f檢驗 matlab專題及常見問題 - CSDN
    15.71985 15.91986 15.71987 16.71988 15.31989 16.11990 16.2MATLAB實現參考網上多個代碼可得https://www.ilovematlab.cn/thread-246993-1-1.htmlhttps://blog.csdn.net
  • 了解各統計圖差異,遠離統計圖選擇困難
    統計圖的用途:是根據統計數字,用幾何圖形、事物形象和地圖等繪製的各種圖形。它具有直觀、形象、生動、具體等特點。統計圖可以使複雜的統計數字簡單化、通俗化、形象化,使人一目了然,便於理解和比較。因此,統計圖在統計資料整理與分析中佔有重要地位,並得到廣泛應用。在解答資料分析測驗中有關統計圖的試題時,既要考察圖的直觀形象,又要注意核對數據,不要被表面形象所迷惑。
  • android啟動頁設計專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/wangjihuanghun/article/details/63255144啟動頁幾乎成為了每個app的標配,有些商家在啟動頁中增加了開屏廣告以此帶來更多的收入。
  • 初中數學知識點總結—統計表和統計圖
    2.頻數分布表: 運用頻數分布直方圖進行數據分析的時候,一般先列出它的分布表,其中有幾個常用的公式:各組頻數之和等於抽樣數據總數;各組頻率之和等於1;數據總數×各組的頻率=相應組的頻數。 畫頻數分布直方圖的目的,是為了將頻數分布表中的結果直觀、形象地表示出來。
  • 卡方檢驗相關性專題及常見問題 - CSDN
    那麼有一個問題:協方差數值大小是否代表了相關程度呢?也就是說如果協方差為 100 是否一定比協方差為 10 的正相關性強呢?考察兩個變量的相關關係,首先得看清楚兩個變量都是什麼類型的,統計分析中常見的變量類型有連續型數值變量,無序分類變量、有序分類變量:連續型數值變量:如銷售額、氣溫、工資收入、考試成績;無序分類變量:如性別男和女,血型種類;有序分類變量:如學歷水平小學、初中、高中
  • 衝擊2019年中考數學,專題複習119: 與統計圖有關的中考題
    典型例題分析1:某中學九年級(1)班為了了解全班學生的興趣愛好情況,採取全面調查的方法,從舞蹈、書法、唱歌、繪畫等四個方面調查了全班學生的興趣愛好,根據調查的結果組建了4個興趣小組,並繪製成如圖所示的兩幅不完整的統計圖(如圖①,②,要求每位學生只能選擇其中一種自己喜歡的興趣項目
  • 醫學寫作中數據的統計方法及結果常見問題及分析
    科學研究很早就已經從簡單的定性分析深入到細緻的定量分析,科研工作者要面對大量的數據分析問題,科研數據的統計分析結果直接影響著論文的結果分析。下面,醫刊彙編譯列舉一些常見的可以避免的問題和錯誤:一、數據統計分析方法使用錯誤或不當。醫學論文中,最常見的此類錯誤就是實驗設計是多組研究,需要對數據使用方差分析的時候,而作者都採用了兩樣本的均數檢驗。二、統計方法闡述不清楚。
  • 衝擊19年中考數學,專題複習140:與統計圖有關的解答題
    典型例題分析1:為響應「書香校園」號召,某中學在九年級學生中隨機抽取某班學生對2017年全年閱讀中外名著的情況進行調查,整理調查結果發現,每名學生閱讀中外名著的本數,最少的有5本,最多的有8本,並根據調查結果繪製了如圖所示的不完整的折線統計圖和扇形統計圖
  • 方差檢驗專題及常見問題 - CSDN
    Excel雙樣本T檢驗之等方差檢驗1 聲明本文的數據來自網絡,部分代碼也有所參照,這裡做了注釋和延伸,旨在技術交流,如有冒犯之處請聯繫博主及時處理。
  • R語言——通過bootstrap自抽樣量化統計估計量的不確定性
    回到我們的計量話題,今天要講的內容是bootstrap自抽樣。我還記得我在統計課上第一次學bootstrap的時候,全程都在神遊,以至於後來做作業時以為bootstrap是什麼特別高級難懂的技術問題,很長一段時間內碰到bootstrap就頭大。
  • pc端的rem布局專題及常見問題 - CSDN
    子元素的float、clear和vertical-align屬性將失效flex布局又叫伸縮布局、彈性布局、伸縮布局、彈性盒子布局採用flex布局的元素稱為flex容器(flex container)簡稱容器,它的所有子元素自動成為容器成員,稱為(flex item)「項目」總之:就是通過給父盒子添加flex屬性,來控制盒子的位置和排列方式父項常見屬性
  • 擬合優度專題及常見問題 - CSDN
    即:回到擬合優度的問題上,我們就容易理解,當所有樣本點都落在回歸線上時,回歸方程的擬合優度一定是最高的。此時,y的SST只包含SSR部分,沒有SSE。由此可知,在y的SST中,如果SSR所佔比例遠大於SSE所佔比例,換句話說,就是回歸方程如果能夠解釋的變差所佔比例較大,那麼,這個回歸方程的擬合優度就高。
  • 垂直行業雲計算專題及常見問題 - CSDN
    問:雖然現在上雲的話題有很多落地案例,但大多處在觀望狀態。歸結起來也就:服務性能、安全保密性能、計算性能三方面。金山雲是如何解決這些難題的?   黃:從雲計算的角度來說,安全是大家都很關注的部分,這個是需要時間積累的。首先,雲計算行業國家有制定相應的安全標準,比如雲本身是否獲得雲等保三級,規定了相應的數據處理規範。
  • f p 線性回歸專題及常見問題 - CSDN
    對於一個樣本\(x_i\),它的輸出值是其特徵的線性組合:\[\begin{equation}f(x_i) = \sum_{m=1}^{p}w_m x_{im}+w_0={w}^T{x_i}\end{equation}\]線性回歸的目標是用預測結果儘可能地擬合目標label,用最常見的Least square作為loss function:\[\begin{equation}
  • python 顯著性水平專題及常見問題 - CSDN
    '''Define A Basic Linear Model列印summary時發現有很多關於模型的信息,為了弄清楚這些統計指標,我們需要仔細研究一下標準的線性回歸模型,下面模型中的ei是預測值和真實值的差,我們默認模型的誤差是正態分布的,均值為0.
  • api 微博數據專題及常見問題 - CSDN
    2018.4.16 說明注意:今天有人言語惡劣地評論我的博客是垃圾,說我的代碼有問題,這篇博客歷史久遠,是我初玩爬蟲寫的博客。我非常感謝能對我的代碼提出意見的人,但是出言不遜,態度惡劣的人我是忍受不了的,有話好好說,是一個現代社會高學歷高知識分子的最低覺悟。代碼我已經改過了,如果還有問題非常歡迎大家來溫和地指出!!!!
  • t值判斷顯著性專題及常見問題 - CSDN
    「 ggplot2中的顯著性標記」生活科學哥-R語言科學 2020-08-01  5:36最近由於工作的原因,有一段時間沒更新了,今天是周末,早上就是沒睡著,起來寫點東西,今天來講一講顯著性的標記。提出問題  顯著性值p是一個很常見的事。比如我們在對比兩組或者是多組數據時,對於兩組而言,會做Two Sample T Test,然後給出一個p值,判斷兩者差異的顯著性。在ggplot2中,兩組數據對比時,我們常用的,就是boxplot,那麼,如何在作出兩組或者多組的boxplot的同時,標記出顯著性的數據呢?
  • a標籤 href vue專題及常見問題 - CSDN
    &ltvue中路由跳轉傳參數有多種,自己常用的是下面的幾種 通過router-link進行跳轉 通過編程導航進行路由跳轉 1. router-link 1. path -> 是要跳轉的路由路徑微信分享時 分享連結攜帶參數可能不是固定的 需要在分享的前一刻才知道 這裡就是動態設置分享連結的基本寫法 代碼不是那麼詳盡 但大致流程如下 1.安裝引用
  • python的int類型專題及常見問題 - CSDN
    在以前的Python2中,整型分為int和long,也就是整型和長整型, 長整型不存在溢出問題, 即可以存放任意大小的數值,理論支持無限大數字。因此在Python3 中,統一使用長整型,用int表示,在Python3中不存在long,只有int。