当我们学习python的时候,总会用到一些常用的模块,接下来我就详细讲解下利用两种不同的方式画饼状图。
首先利用【Tkinter】中的canvas画布来画饼状图:
from tkinter import Tk, Canvas
def DrawPie():
#创建窗口
windows=Tk()

#添加标题
windows.title("画饼图")

# 设置画布样式
canvas=Canvas(windows,height=500,width=500)

# 将画布打包到窗口
canvas.pack()

#利用画布的create_arc画饼形,(400,400)和(100,100)为饼形外围的矩形,
# start=角度起始,extent=旋转的度数,fill=填充的颜色
canvas.create_arc(400,400,100,100,start=0,extent=36,fill="red")
canvas.create_arc(400,400,100,100,start=36,extent=72,fill="green")
canvas.create_arc(400,400,100,100,start=108,extent=108,fill="yellow")
canvas.create_arc(400,400,100,100,start=216,extent=144,fill="blue")

# 为各个扇形添加内容,圆心为(250,250)
canvas.create_text(430,200,text="36°",font=("华文新魏",20))
canvas.create_text(330,100,text="72°",font=("华文新魏",20))
canvas.create_text(90,200,text="108°",font=("华文新魏",20))
canvas.create_text(390,370,text="144°",font=("华文新魏",20))

# 开启消息循环
windows.mainloop()

if __name__ == '__main__':
  #调用方法

DrawPie()

以上方法就是用的Tkinter画布来画饼状图的,接下来我们来看下第三方模块【matplotlib】中的pyplot:
from matplotlib import pyplot
# 中文支持
pyplot.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示中文标签
pyplot.rcParams['axes.unicode_minus'] = False # 用来正常显示负号

def showPieChart():
#调用pyplot模块中的pie方法绘制饼图,pie方法的第一个参数是各个部分所占的比例,后面其他的参数是对饼形图的一些修饰的标签,
labels为描述的内容,
startangle为绘制的起始角度,counterclock为绘制的方向(默认为逆时针)
    pyplot.pie([36,72,108,144], labels=["36°", "72°", "108°", "144°"], startangle=90, counterclock=False)
#显示图形

pyplot.show()

if __name__ == '__main__':
   #调用函数
showPieChart()

其实两种方法都大同小异,只不过应用的模块不一样,第一种方法只能绘制图形不能添加饼图的内容,而第二种方法内部封装的饼形图的样式,可以添加的样式也丰富多彩。


 

利用Tkinter和matplotlib两种方式画饼状图的更多相关文章

  1. vue中使用echarts画饼状图

    echarts的中文文档地址:https://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20EC ...

  2. Keras中间层输出的两种方式,即特征图可视化

    训练好的模型,想要输入中间层的特征图,有两种方式: 1. 通过model.get_layer的方式.创建新的模型,输出为你要的层的名字. 创建模型,debug状态可以看到模型中,base_model/ ...

  3. 4.5Python数据处理篇之Matplotlib系列(五)---plt.pie()饼状图

    目录 目录 前言 (一)简单的饼状图 (二)添加阴影和突出部分 (三)显示图例和数据标签: 目录 前言 饼状图需要导入的是: plt.pie(x, labels= ) (一)简单的饼状图 (1)说明: ...

  4. canvas+js画饼状图

    效果: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. 获取表单选中的值(利用php和js两种方式)

    php代码中获取表单中单选按钮的值: (单选按钮只能让我们选择一个,这里有一个“checked”属性,这是用来默认选取的,我们每次刷新我们的页面时就默认为这个值.) 例: <form name= ...

  6. Python数据可视化:画饼状图、折线图、圈图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. from math import pi import matplotlib ...

  7. python plotly 画饼状图

    代码 import pandas as pd import numpy as np import plotly.plotly as py import plotly.graph_objs as go ...

  8. Python:实现图片裁剪的两种方式——Pillow和OpenCV

    原文:https://blog.csdn.net/hfutdog/article/details/82351549 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还 ...

  9. PHP画矩形,椭圆,圆,画椭圆弧 ,饼状图

    1:画矩形: imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col ) imagere ...

随机推荐

  1. Java中迭代器Iterator的使用

    Java集合类中Map接口下的相关类并没有像Collection接口的相关类一样实现get()方法,因此在要实现遍历输出的场景中没法直接用get()方法来取得对象中的数据,但Java本身提供了另一种遍 ...

  2. springmvc返回枚举属性值

    使用fastJSON ,在枚举中写toString 方法 如下@Overridepublic String toString() {return "{" + this.name() ...

  3. 在JavaScript中使用json.js:Ajax项目之GET请求(同步)

    1.用php编写一个提供数据的响应程序(phpdata.php) <?php $arr=array(1,2,3,4); //将数组编码为JSON格式的数据 $jsonarr=json_encod ...

  4. String Problem hdu 3374 最小表示法加KMP的next数组

    String Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  5. python --- 网络编程Socket

    网络编程 定义:所为网络编程即是对信息的发送和接收. 主要工作: (1)发送端:将信息以规定的协议组装成数据包. (2)接收端:对收到的数据包解析,以提取所需要的信息. Socket:两个在网络上的程 ...

  6. 云计算---OpenStack Neutron详解

    简介: neutron是openstack核心项目之一,提供云计算环境下的虚拟网络功能 OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础 ...

  7. 多个activity跳转保留内存使用intent传递数据问题_新手

    /////本来是做的activity跳转,普通那种,但是会在调回来会销毁原来的,重新调用onCreate方法, 后来参考[http://blog.csdn.net/qq_26918031/articl ...

  8. 三分钟浅谈TT猫的前端优化

    首先看一张访问TT猫首页的截图: 测试环境为谷歌浏览器,暂且不讨论其它浏览器,截图下方我们可以观察到以下参数: DOMContentLoaded:1.42s | Load:2.31s 以上参数是在CT ...

  9. ch4-注册 登陆 实现 cookie使用

    1 mysql 回调函数优化 1.1 mysql代码: config.query(handlerStr, value, function (err, data) { callback &&am ...

  10. zoj3961(区间问题)

    点击打开zoj1961Let's Chat Time Limit: 1 Second      Memory Limit:65536 KB ACM (ACMers' Chatting Messenge ...