实验环境

python 3.6

matplotlib 2.2.3

饼图的绘制

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False)

  • x:指定绘图的数据;

  • explode:指定饼图某些部分的突出显示,即呈现爆炸式;

  • labels:为饼图添加标签说明,类似于图例说明;

  • colors:指定饼图的填充色;

  • autopct:自动添加百分比显示,可以采用格式化的方法显示;

  • pctdistance:设置百分比标签与圆心的距离;

  • shadow:是否添加饼图的阴影效果;

  • labeldistance:设置各扇形标签(图例)与圆心的距离;

  • startangle:设置饼图的初始摆放角度;

  • radius:设置饼图的半径大小;

  • counterclock:是否让饼图按逆时针顺序呈现;

  • wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等;

  • textprops:设置饼图中文本的属性,如字体大小、颜色等;

  • center:指定饼图的中心点位置,默认为原点

  • frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置;

芝麻信用失信用户的分析

我们借用芝麻信用近300万失信人群的样本统计数据,该数据显示,从受教育水平上来看,中专占比25.15%,大专占比37.24%,本科占比33.36%,硕士占比3.68%,剩余的其他学历占比0.57%。

# 导入包
import matplotlib.pyplot as plt
# 设置绘图的主题风格
plt.style.use("ggplot")
# 构造数据
edu = [0.2515,0.3724,0.3336,0.0368,0.0057]
labels = ["中专","大专","本科","硕士","其他"]explode = [0,0.05,0,0,0] # 用于突出显示大专学历人群colors = ['#9999ff','#ff9999','#7777aa','#2442aa','#dd5555'] # 自定义颜色# 中文乱码和坐标轴负号处理
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆
plt.axes(aspect = "equal")# 控制x轴和y轴的范围
plt.xlim(0,10)
plt.ylim(0,10)# 绘制饼图
plt.pie(x = edu,# 绘图数据explode=explode, #突出显示大专人群labels = labels,# 添加教育水标签colors = colors,# 设置饼图的自定义填充色autopct='%.1f%%',# 设置百分比格式,这里保留一位小数pctdistance = 0.8,# 设置百分比标签与圆心的距离labeldistance = 1.1,# 设置教育水平标签与圆心的距离,1.1指1.1倍半径的位置startangle = 180,# 设置饼图的初始角度radius = 3.3,# 设置饼图的半径counterclock = False,# 是否逆时针,这里设置为顺时针方向wedgeprops = {'linewidth': 0.1, 'edgecolor':'green'},# 设置饼图内外边界的属性值textprops = {'fontsize':12, 'color':'k'},# 设置文本标签的属性值center = (4,4),# 设置饼图的原点shadow = False, #在饼图下面画一个阴影。默认值:False,即不画阴影;frame = 1 )# 是否显示饼图的图框 ,这里设置显示
# 删除x轴和y轴的刻度
plt.xticks(())
plt.yticks(())
plt.legend()
# 添加图标签
plt.title("芝麻信用失信用户教育水平分布")
plt.show()# 显示图形

直方图的绘制

matplotlib.pyplot.hist(x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False)

  • x:指定要绘制直方图的数据;

  • bins:指定直方图条形的个数;

  • range:指定直方图数据的上下界,默认包含绘图数据的最大值和最小值;

  • normed:是否将直方图的频数转换成频率;

  • weights:该参数可为每一个数据点设置权重;

  • cumulative:是否需要计算累计频数或频率;

  • bottom:可以为直方图的每个条形添加基准线,默认为0;

  • histtype:指定直方图的类型,默认为bar,除此还有’barstacked’, ‘step’, ‘stepfilled’;

  • align:设置条形边界值的对其方式,默认为mid,除此还有’left’和’right’;

  • orientation:设置直方图的摆放方向,默认为垂直方向;

  • rwidth:设置直方图条形宽度的百分比;

  • log:是否需要对绘图数据进行log变换;

  • color:设置直方图的填充色;

  • label:设置直方图的标签,可通过legend展示其图例;

  • stacked:当有多个数据时,是否需要将直方图呈堆叠摆放,默认水平摆放;

使用titanic数据集

一元直方图的绘制

# 导入第三方包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
# 中文和负号的正常显示
plt.rcParams["font.sans-serif"] = ["KaiTi"]
plt.rcParams["axes.unicode_minus"] = False
# 读取泰坦尼克数据集
titanic = pd.read_csv("train.csv")
# 检查年龄是否有缺失
age_isnull = any(titanic.Age.isnull())
print("年龄是否有缺失:",age_isnull)
# 删除年龄确实的样本
titanic.dropna(subset=["Age"],inplace=True)
年龄是否有缺失: True
# 设置图形的显示风格
plt.style.use('ggplot')
# 绘图:乘客年龄的频数直方图
plt.hist(titanic.Age, # 绘图数据bins = 20, # 指定直方图的条形数为20个color = 'steelblue', # 指定填充色edgecolor = 'k', # 指定直方图的边界色label = '直方图' )# 为直方图呈现标签# 去除图形顶部边界和右边界的刻度
plt.tick_params(top='off', right='off')
# 显示图例
plt.legend()
# 显示图形
plt.show()

上图绘制的是年龄的频数直方图,从整体的分布来看,有点像正态分布,两边低中间高的倒钟形状。

二元直方图的绘制

如果想对比男女乘客的年龄直方图的话,我们可以通过两个hist将不同性别的直方图绘制到一张图内

# 提取不同性别的年龄数据
age_female = titanic.Age[titanic.Sex == "female" ]
age_male = titanic.Age[titanic.Sex == "male" ]
# 设置直方图的组距
bins = np.arange(titanic.Age.min(),titanic.Age.max(),2)
# 男性乘客年龄的直方图
plt.hist(age_male,bins = bins,label = "男性",color = "blue",alpha = 0.5)
# 女性乘客年龄的直方图
plt.hist(age_female,bins = bins,label = "女性",color = "r",alpha = 0.8)# 设置坐标轴标签和标题
plt.title("乘客年龄直方图")
plt.xlabel("年龄")
plt.ylabel("人数")# 去除图形顶部边界和右部边界的刻度
plt.tick_params(top = "off",right = "off")
# 显示图例
plt.legend()
# 显示图形
plt.show()

图中结果反映不同年龄组内几乎都是男性乘客比女性乘客要多;同时,也说明男女性别的年龄组分布几乎一致

本文章主要作为学习历程的记录,如有侵权,请联系作者删除,原文地址https://www.kesci.com/home/project/59f6f21bc5f3f511952c2966

python——Matplotlib饼图、直方图的绘制相关推荐

  1. opencv python matplotlib.pyplot.hist() 如何绘制灰度直方图,如何根据灰度直方图确定最优二值化值

    什么是灰度直方图? 图像直方图(histogram)是图像的统计学特征,常用于了解图像的基本特征以便分析.不过图像的直方图不具有空间特征. 图像的灰度直方图(histogram),就是将图像转化成灰度 ...

  2. python matplotlib绘制函数图形_【总结篇】Python matplotlib之使用统计函数绘制简单图形...

    写在前面 作者注:我在这里只总结函数的功能及其用法,程序实例参考链接:link 我们用下面的语句来导入matplotlib库: 1import matplotlib.pyplot as plt 绘制简 ...

  3. python绘制直方图-python matplotlib库直方图绘制详解

    例题:假设你获取了250部电影的时长(列表a中),希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据? 一些概念及问题: 把数据分 ...

  4. python matplotlib 饼图标签重叠_Python绘制饼图调节字体大小、防止标签重叠解决方法...

    设置字体的大小 patches,l_text,p_text=plt.pie(money_rate,explode=explode,labels=names,autopct='%.2f%%') # l_ ...

  5. python matplotlib各种图的绘制(基础)

    Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表,可根据数据集(DataFrame,Series)自行定义x,y轴,绘制图形(线形图 ...

  6. python matplotlib.pyplot 如何实时绘制三维动态窗口?(可鼠标拖动角度)

    实时绘制三维图并更新窗口 # -*- coding: utf-8 -*- """ @File : test.py @Time : 2020/5/26 18:09 @Aut ...

  7. Python Matplotlib scatter函数:绘制散点图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  8. Python matplotlib 饼图

    文章目录 一.整理数据 二.创建饼图 三.爆炸效果 四.阴影效果 五.为饼图加上百分比 六.让饼图旋转不同的角度 七.为饼图添加边缘线 八.为饼图数据分组 一.整理数据 关于cnboo1.xlsx,我 ...

  9. Python matplotlib数据可视化 subplot绘制多个子图

    数据可视化的时候,有时需要将多个子图放在同一个画板上进行比较.通过使用GridSpec类配合subplot,可以很容易对子区域进行划定和选择,在同一个画板上绘制多个子图. 原文链接:https://y ...

最新文章

  1. 20172318 2017-2018-2 《程序设计与数据结构》实验3报告
  2. BZOJ4196: [Noi2015]软件包管理器 (好题
  3. h5课件制作_一个好的h5交互课件该怎么制作
  4. ALV打印不显示打印界面的问题
  5. vue.js中mock本地json数据
  6. jquery 获取easyui combobox选中的值
  7. Python数据分析模块 | pandas做数据分析(二):常用预处理操作
  8. Cocos Creator 实现大厅+子游戏模式
  9. DLAN 连接和使用体验——Twonky
  10. 安全提示:勒索病毒漏洞与CPU漏洞务必小心
  11. 苹果开发者技术支持电话方式改变
  12. Antd 表格样式修改
  13. Error opening device
  14. 2019,谢谢曾经努力的自己| 个人年度总结
  15. Excel插件:按范围查找,按格式查找,标示相同值
  16. 数据库(二)—— 关系模型概述
  17. git diff with meld,git diff结合meld
  18. centos7 SFTP
  19. 淘宝获得商品详情高级版API调用示例
  20. 鸿蒙如何用JS开发智能手表App

热门文章

  1. Linux下安装YASM--编译x264
  2. MacOS 开启latex人生(mactex+texmaker安装)
  3. Linux下驱动开发
  4. 【ZBH选讲·拍照】
  5. Codeforces 1292C Xenon's Attack on the Gangs
  6. 从浏览器中打开我们的应用
  7. 【数学分析】数列的上极限与下极限
  8. Evil Corp 团伙开始使用 LockBit Ransomware 逃避制裁
  9. ios关联启动_部落冲突电脑版与IOS设备关联教程
  10. Elasticsearch高级(Shards、高可用集群搭建)