chart.js 餅圖顯示百分比_實戰PyQt5: 135-數據可視化之QChart繪制餅圖

e594af5a5eb981354774fd66ce62a353.png

餅圖是數據可視圖表的基本類型,在QChart中,QPieSeries, QPieSlice處理餅圖的繪制。

QPieSeries

QPieSeries類以餅圖形式顯示數據。餅圖系列由定義為QPieSlice對象的切片組成。切片可以具有任何值,因為QPieSeries對象計算切片的百分比與系列中所有切片的總和之比,以確定圖表中切片的實際大小。餅圖的大小和在圖表上的位置是通過使用0.0到1.0范圍內的相對值來控制的,這些與實際的圖表矩形有關。默認情況下,該餅被定義為完整餅。通過設置系列的起始角度和角度跨度可以創建局部餅圖。完整的餅圖是360度,其中12點是0。

QPieSeries常用函數:

  • append(self, slice): 添加一個切片slice到餅圖中
  • append(label, value): 將指定label和value的切片添加到餅圖中,如果添加成功則返回切片對象,否則返回空值。
  • clear(self): 清除餅圖中的所有切片。
  • count(self): 獲得切片數目
  • setHoleSize(self):設置餅圖孔洞尺寸,該值相對于圖表矩形。0.0是最小大小(繪制完整的餅圖,不帶孔)。1.0是可以容納圖表的最大尺寸(甜甜圈沒有寬度)。默認值為0.0。設置此屬性時,如有必要,將調整size屬性,以確保孔大小不大于餅圖大小。
  • setLabelsVisible(self, visible): 將所有切片標簽的可見性設置為visible。注意:此功能僅影響序列中的當前切片。如果添加了新切片,則默認標簽可見性為False。
  • setPieStartAngle(self, startAngle): 設置餅圖的開始角度為startAngle,完整的餅圖是360度,其中12點是0度。默認值為360。
  • setPieEndAngle(self, endAngle): 設置餅圖結束角度為endAngle。
  • setPieSize(self, relativeSize): 設置餅圖的相對尺寸為relativeSize,該值相對于圖表矩形, 0.0是最小尺寸(未繪制餅圖),1.0是適合圖表的最大尺寸。默認值為0.7。設置此屬性時,如有必要,將調整holeSize屬性,以確保孔大小不大于餅圖大小。
  • sum(self): 返回餅圖中所有切片值的總和。
  • reomove(self, slice): 從餅圖中刪除指定的切片slice。切片將被永久刪除。
  • take(self, slice): 從餅圖中獲取由slice指定的單個切片。不刪除切片對象。

QPieSeries常用信號:

  • added(self, slices): 當slices加入到餅圖時信號被發射。
  • clicked(self,slice): 單擊由slice指定的切片時,發射該信號。
  • countChanged(self): 當切片計數改變時,該信號被發射。
  • doubleClicked(slef, slice): 雙擊由slice指定的切片時,將發出此信號。
  • hovered(self, slice, state): 當鼠標懸停在slice指定的切片上時,將發出此信號。當鼠標移到切片上時,state變為True,而當鼠標再次移開時,state變為False。
  • pressed(self, slice): 當用戶單擊由slice指定的切片并按住鼠標按鈕時,將發出此信號。
  • released(self, slice): 當用戶釋放對slice指定的切片的鼠標按下時,將發出此信號。
  • removed(self,slices): 當從餅圖中刪除由片段指定的slices時,將發出此信號。
  • sumChanged():當所有切片的總和發生變化時,將發射該信號。

QPieSlice

QPieSlice類表示一個餅圖系列中的單個切片。餅圖切片具有一個值和一個標簽。將切片添加到餅圖時,QPieSeries對象將計算該切片與該系列中所有切片的總和相比較的百分比,以確定圖表中切片的實際大小。默認情況下,標簽是隱藏的。如果可見,則可以將其放置在切片的外部,并用手臂將其連接,也可以將其水平或平行于切片弧的切線或法線居中放置在切片內部。默認情況下,切片的視覺外觀是由主題設置的,但是可以通過指定切片屬性來覆蓋主題。為了使用戶能夠與餅圖進行交互,當用戶單擊餅圖或將鼠標懸停在餅圖上時,會發出一些基本信號。

QPieSlice常用函數:

  • setBorderColor(self,color): 設置用于繪制切片邊界的顏色。
  • setBorderWidth(self, width):設置切片邊界的寬度。
  • setBrush(self, brush):設置用于填充切片的畫刷。
  • setColor(self, color): 設置切片的填充(畫刷)顏色。
  • setExplodeDistanceFactor(self, factor): 設置explode切片偏移餅的距離。1.0表示距離與半徑相同。0.5表示該距離是半徑的一半。默認距離為0.15。
  • setExploded(self, exploded): 設置切片的explode屬性。
  • setLabel(self, label): 設置切片的標簽。
  • setLabelArmLengthFactor(self, factor): 設置切片標簽臂的長度。該因數是相對于扇形半徑的。1.0表示距離與半徑相同。0.5表示該距離是半徑的一半。默認距離為0.15。
  • setLabelBrush(self, brush): 設置用于繪制切片的標簽和標簽臂的筆刷。
  • setLabelColor(self, color): 設置用于繪制切片標簽的顏色。
  • setLabelFont(self, font): 設置用于繪制標簽文本的字體。
  • setLabelPosition(self, position): 設置切片標簽的位置。
  • setLabelVisible(self, visible): 設置切片標簽的是否可見。默認情況下,標簽不可見。
  • setPen(self, pen): 設置用于繪制切片邊界的畫筆。
  • setValue(self, value): 設置切片與餅圖中所有切片的總和相比的百分比。實際值范圍是0.0到1.0。將切片添加到系列后,將自動更新。

QPieSlice 常用信號:

  • angleSpanChanged(self):當切片的角度跨度發生變化時,將發出此信號。
  • borderColorChanged(self):當切片邊界顏色更改時,將發射此信號。
  • borderWidthChanged(self):當切片邊界寬度改變時,該信號被發射。
  • brushChanged(self):當用于填充切片的筆刷更改時,將發出此信號。
  • clicked(self):單擊切片時會發出此信號。
  • colorChanged(self):當切片顏色改變時,該信號被發射。
  • doubleClicked(self):用戶雙擊切片時會發出此信號。
  • hovered(self,state):當鼠標懸停在切片上時,將發出此信號。當鼠標移到切片上時,state變為True,而當鼠標再次移開時,state變為False。
  • labelBrushChanged(self):切片的標簽筆刷更改時,將發出此信號。
  • labelChanged(self):切片標簽更改時將發出此信號。
  • labelColorChanged(self):切片標簽顏色更改時,將發出此信號。
  • labelFontChanged(self):當切片的標簽字體更改時,將發出此信號。
  • labelVisibleChanged(self):切片標簽的可見性更改時,將發出此信號。
  • penChanged(self):當用于繪制切片邊界的筆改變時,將發出此信號。
  • percentageChanged(self):當切片的百分比發生變化時,將發出此信號。
  • pressed(self):當用戶單擊切片并按住鼠標按鈕時,將發出此信號。
  • released(self):當用戶釋放切片上的鼠標按鍵時,將發出此信號。
  • startAngleChanged(self):切片的起始角度發生變化時,將發出此信號。
  • valueChanged(self):當切片值改變時,該信號被發射。

餅圖演示

代碼演示了一個簡單的餅圖顯示效果,完整代碼如下:

import?sysfrom?PyQt5.QtGui?import?QPainter,?QPenfrom?PyQt5.QtCore?import?Qtfrom?PyQt5.QtWidgets?import?QApplication,?QMainWindowfrom??PyQt5.QtChart?import?QChart,?QChartView,?QPieSeries,?QPieSlice?class?DemoChartPieSeries(QMainWindow):????def?__init__(self,?parent=None):????????super(DemoChartPieSeries,?self).__init__(parent)????????????????????#?設置窗口標題????????self.setWindowTitle('實戰?Qt?for?Python:?QChart餅圖演示')??????????????#?設置窗口大小????????self.resize(480,?360)?????????????? self.createChart()????????????def?createChart(self):??????????????#設置餅圖數據????????pieSeries?=?QPieSeries()????????pieSeries.append('Jane',?1)????????pieSeries.append('Joe',?2)????????pieSeries.append('Andy',?3)????????pieSeries.append('Barbara',?4)????????pieSeries.append('Axel',?5)????????????????#處理索引號為1的片????????pieSlice?=?pieSeries.slices()[1]????????pieSlice.setExploded()????????pieSlice.setLabelVisible()?#設置標簽可見,缺省不可見????????pieSlice.setPen(QPen(Qt.darkGreen,?2))????????pieSlice.setBrush(Qt.green)????????????????#創建圖表????????chart?=?QChart()????????chart.addSeries(pieSeries)????????chart.setTitle('簡單的餅圖示例')????????chart.legend().hide()????????????????#圖表視圖????????chartView?=?QChartView(chart)????????chartView.setRenderHint(QPainter.Antialiasing)????????????????self.setCentralWidget(chartView)??????????????if?__name__?==?'__main__':????app?=?QApplication(sys.argv)????window?=?DemoChartPieSeries()????window.show()????sys.exit(app.exec())???

運行運行結果如下:

a5e4278164bcac17b7b5af72487723c2.png

QChart餅圖演示

甜甜圈圖示例

使用一個去掉中心部分形成一個圈狀餅圖,演示一個甜甜圈的物質成分,完整代碼如下:

import?sysfrom?PyQt5.QtCore?import?Qtfrom?PyQt5.QtGui?import?QPainter,?QFontfrom?PyQt5.QtWidgets?import?QApplication,?QMainWindowfrom??PyQt5.QtChart?import?QChart,?QChartView,?QPieSeries,?QPieSlice?class?DemoChartDonut(QMainWindow):????def?__init__(self,?parent=None):????????super(DemoChartDonut,?self).__init__(parent)????????????????????#?設置窗口標題????????self.setWindowTitle('實戰?Qt?for?Python:?QChart甜甜圈圖演示')??????????????#?設置窗口大小????????self.resize(480,?360)?????????????? self.createChart()????????????def?createChart(self):??? ???????????#設置餅圖數據????????pieSeries?=?QPieSeries()????????pieSeries.setHoleSize(0.35)????????pieSeries.append('蛋白質?4.2%',?4.2)????????pieSlice?=?pieSeries.append('脂肪?15.6%',?15.6)????????pieSlice.setExploded()????????pieSlice.setLabelVisible()?#設置標簽可見,缺省不可見????????pieSeries.append('其他?23.8%',?23.8)????????pieSeries.append('碳水化合物?56.4%',?56.4)????????????????#圖表視圖????????chartView?=?QChartView()????????chartView.setRenderHint(QPainter.Antialiasing)????????chartView.chart().setTitle('檸檬汁甜甜圈(100克)')????????chartView.chart().addSeries(pieSeries)????????chartView.chart().legend().setAlignment(Qt.AlignBottom)????????chartView.chart().setTheme(QChart.ChartThemeBlueCerulean)????????chartView.chart().legend().setFont(QFont('Arial',?8))?#圖例字體????????????????self.setCentralWidget(chartView)??????????????if?__name__?==?'__main__':????app?=?QApplication(sys.argv)????window?=?DemoChartDonut()????window.show()????sys.exit(app.exec())???

運行結果如下圖:

ae97308ec7bce0c356678f45644fe133.png

甜甜圈的物質成分示意

本文知識點

  • 餅圖控制類QPieSeries。
  • 餅圖切片類QPieSlice。
  • 繪制一個中空的餅圖。
  • 設置餅圖的背景主題。
  • 設置餅圖的圖例。

前一篇: 實戰PyQt5: 134-數據可視化之QChart繪制折線圖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271310.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271310.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271310.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lambda中使用filter過濾

單一條件過濾 /*** 測試filter*/Testpublic void testFilter() {List<User> user new ArrayList<>();user.add(new User(1L, 18, "小明"));user.add(new User(2L, 20, "小王"));user.add(new User(3L, 28, "小剛"));user.add(new U…

Silverlight 打印

摘自&#xff1a;http://www.cnblogs.com/jiajiayuan/archive/2012/04/13/2444246.html Silverlight中的打印只有一個類&#xff0c;那就是PrintDocment這個對象來實現。下面我用兩種方法來實現Silverlight的打印&#xff1a;第一種&#xff1a; private void btnPrint_Click(o…

數據庫系統的體系結構知識筆記

1、集中式數據庫系統分時系統環境下的集中式數據庫系統結構誕生于20世紀60年代中期。當時的硬件和操作系統決定了分時系統環境下的集中式數據庫系統構成早期的數據庫技術的首選結構。數據和數據管理都是集中的&#xff0c;數據庫系統的所有系統&#xff0c;從形式的用戶到DBMS核…

mysql2014授權設置_mysql權限管理(2014-09-15)

本文比較碎片化&#xff0c;不過以問答的形式比較容易理解。如何查看mysql的當前登錄的用戶&#xff1f;select user();mysql -hlocalhost -uroot 與root192.168.11.100 區別&#xff1f;mysql -hlocalhost -uroot只能在本地進行登錄&#xff0c;而root192.168.11.100不能在本…

python網站后臺_Python 網站后臺掃描腳本

Python 網站后臺掃描腳本1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/python #codingutf-8 import sys import urllib import time url "http://123.207.123.228/" txt open(r"C:\Users\ww\Desk…

數據庫系統的三級模式結構知識筆記

1、數據抽象的三個層次數據庫系統利用三個層次劃分來抽象來對用戶屏蔽系統的復雜性、簡化用戶與系統的交互。1.1 物理層物理層屬于最低級層次的抽象&#xff0c;描述數據在存儲器上如何進行存儲的。物理層會詳細描述復雜的底層結構。1.2 邏輯層邏輯層屬于中間層&#xff0c;用來…

Arrays.sort()排序

/*** Arrays.sort()排序* 默認升序*/Testpublic void test(){Integer[] result {1,4,7,9};Arrays.sort(result);for (int i 0;i<result.length;i)System.out.println(i);}

import package的問題

在新建class的時候除了名字還可以選擇包名&#xff1a; 新建2個包名&#xff0c;然后在不同的包里寫2個同名的類&#xff0c; 程序中導入另外一個包 package com.hs;import com.hy.Father; 當直接使用Father的時候提示是引用的com.hy.Father public static void main(String[] …

mysql分區列要包含主鍵嗎_MYSQL的分區字段,必須包含在主鍵字段內

在對表進行分區時&#xff0c;如果分區字段沒有包含在主鍵字段內&#xff0c;如表A的主鍵為ID,分區字段為createtime &#xff0c;按時間范圍分區&#xff0c;代碼如下&#xff1a; www.2cto.comCREATE TABLE T1 (id int(8) NOT NULL AUTO_INCREMENT,createtime datetime NOT …

python爬蟲怎么下載圖片到手機_Python爬蟲獲取圖片并下載保存至本地

1、抓取煎蛋網上的圖片。 2、代碼如下&#xff1a; import urllib.request import os #to open the url def url_open(url): requrllib.request.Request(url) req.add_header(User-Agent,Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0) responseu…

數據庫技術基礎:常見基本模型介紹筆記

1、層次模型層次模型采用樹型結構表示數據與數據間的聯系。層次模型中每個節點表示一個實體&#xff0c;實體之間的聯系用節點之間的連線表示&#xff0c;并且除了根節點以外&#xff0c;其他節點有且僅有一個雙親節點。層次模型特點&#xff1a;記錄之間的聯系通過指針實現&am…

升序

/*** 升序*/Testpublic void test25() {List<Integer> array Stream.of(1, 8, 5, 3).collect(toList());// 升序排序array.sort(Integer::compareTo);System.out.println(array);}

核心動畫與UIView的區別

核心動畫與UIView的區別 1、核心動畫只作用于layer&#xff0c;使用核心動畫之前&#xff0c;必須有layer 2、核心動畫只是假象&#xff0c;并沒有移動實際位置 什么時候使用核心動畫&#xff0c;什么時候使用UIView動畫 1、當不需要與用戶進行交互時&#xff0c;使用核心動畫或…

python convert函數_Python內置函數

英文文檔&#xff1a;hex(x)Convert an integer number to a lowercase hexadecimal string prefixed with “0x”, for exampleIf x is not a Python int object, it has to define an __index__() method that returns an integer.說明&#xff1a;1. 函數功能將10進制整數轉…

數據庫技術:數據存儲和查詢知識筆記

1、存儲管理器存儲管理器作用&#xff1a;負責數據庫中數據的存查詢和更新。存儲管理器負責和文件系統交互&#xff0c;將不同的DML語句翻譯成底層文件系統命令&#xff0c;通過這種方式原始數據就通過文件系統存儲在磁盤上。存儲管理器是存儲底層數據和應用程序、以及向數據庫…

mininet在哪編寫python腳本_1 mininet 簡介及同時支持python2和python3

Mininet 是由斯坦福大學研究開發的開源軟件&#xff0c;是一個基于Linux Container虛擬化技術的輕量級網絡模擬器。即可以在個人電腦上模擬出包括交換機、主機、和控制器等軟件定義網絡節點。 為openflow應用提供簡單、免費的應用測試平臺。 支持多用戶獨立的在同一張拓撲上進行…

python列表去重的方法_Python列表中去重的多種方法

怎么快速的對列表進行去重呢&#xff0c;去重之后原來的順序會不會改變呢&#xff1f;去重之后順序會改變set去重列表去重改變原列表的順序了l1 [1,4,4,2,3,4,5,6,1]l2 list(set(l1))print(l2) # [1, 2, 3, 4, 5, 6]但是&#xff0c;可以通過列表中索引(index)的方法保證去重…

lambda中orElse(null)使用

如果取得第一個元素&#xff0c;則用findFirst() 最后提取元素的時候&#xff0c;可以用&#xff1a;get或者orElse(null) 這里要注意的是&#xff0c;規范用法是orElse(null) 用get方法&#xff0c;如果filter中獲取的是null&#xff0c;那么用get方法會拋出異常&#xff1…

求凸包(兩遍掃描,求上下凸包的方法)

求凸包模版 struct point { double x,y; double val,len; }points[20]; point points1[20]; point points2[20]; const int INF1e8; bool cmp(point a,point b) { if(a.xb.x) return a.y<b.y; return a.x<b.x; } double chaji(point a,point b,point c,point d) { return…

數據挖掘:數據倉庫相關知識筆記

1、數據倉庫介紹數據倉庫&#xff08;DW&#xff09;&#xff1a;可以滿足管理人員的決策分析需要&#xff0c;在數據庫基礎上產生了滿足決策分析需要的數據環境。傳統數據庫和數據倉庫比較比較內容傳統數據庫數據倉庫數據內容當前數據歷史的、存檔的、歸納的、計算的數據目標面…