排序 (Ranking)

棒棒糖图 (Lollipop Chart)

棒棒糖图表以一种视觉上令人愉悦的方式提供与有序条形图类似的目的。

https://datawhalechina.github.io/pms50/#/chapter16/chapter16

导入所需要的库

import numpy as np              # 导入numpy库
import pandas as pd # 导入pandas库
import matplotlib as mpl # 导入matplotlib库
import matplotlib.pyplot as plt
import seaborn as sns # 导入seaborn库

设定图像各种属性

large = 22; med = 16; small = 12

params = {'axes.titlesize': large,      # 设置子图上的标题字体
'legend.fontsize': med, # 设置图例的字体
'figure.figsize': (16, 10), # 设置图像的画布
'axes.labelsize': med, # 设置标签的字体
'xtick.labelsize': med, # 设置x轴上的标尺的字体
'ytick.labelsize': med, # 设置整个画布的标题字体
'figure.titlesize': large}
#plt.rcParams.update(params) # 更新默认属性
plt.style.use('seaborn-whitegrid') # 设定整体风格
sns.set_style("white") # 设定整体背景风格

程序代码

# step1:导入数据
df_raw = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")
df = df_raw[['cty', 'manufacturer']].groupby('manufacturer').apply(lambda x:x.mean())
df.sort_values('cty', inplace = True) # 对'mpg_z这一列数据进行排序
df.reset_index(inplace = True) # 对排序后的数据重置索引 # step2: 绘制棒棒糖图
# 创建画布对象以及子图对象
fig,ax = plt.subplots(figsize = (16, 10), # 画布尺寸
facecolor = 'white', # 画布颜色
dpi = 80) # 分辨率
# 绘制柱状图
ax.vlines(x = df.index, # 横坐标
ymin = 0, # 柱状图在y轴的起点
ymax = df.cty, # 柱状图在y轴的终点
color = 'firebrick', # 柱状图的颜色
alpha = 0.7, # 柱状图的透明度
linewidth = 2) # 柱状图的线宽
# 绘制柱形图上的散点
ax.scatter(x = df.index, # 横坐标
y = df.cty, # 纵坐标
s = 75, # 散点的尺寸
color = 'firebrick', # 颜色
alpha = 0.7) # 透明度 # step3:装饰
# 设置标题、纵坐标的范围、横纵坐标的标题
ax.set_title('Lollipop Chart for Highway Mileage', fontdict={'size':22}) # 设置标题以及字体大小
ax.set_ylabel('Miles Per Gallon') # 设置y轴标签
ax.set_xticks(df.index) # 设置x轴标尺刻度
ax.set_xticklabels(df.manufacturer.str.upper(), # 刻度标尺的内容(先转化为字符串,再转换为大写)
rotation=60, # 旋转角度
fontdict={'horizontalalignment': 'right', 'size':12}) # 相对于刻度标尺右移,且设置字体尺寸
ax.set_ylim(0, 30) # 设置y轴范围 # step3: 注释
for row in df.itertuples(): # 遍历数据作为横坐标
ax.text(row.Index, # 文本位置的横坐标
row.cty+.5, # 文本位置的纵坐标
s=round(row.cty, 2), # 对text保留2位小数(照指定的小数位数进行四舍五入运算的结果)
horizontalalignment= 'center', # 水平对齐参数
verticalalignment='bottom', # 垂直对齐参数
fontsize=14) # 文本尺寸
plt.show() # 显示图像

数据可视化实例(十六):有序条形图(matplotlib,pandas)的更多相关文章

  1. 数据可视化实例(六): 带线性回归最佳拟合线的散点图(matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter3/chapter3 如果你想了解两个变量如何相互改变,那么最佳拟合线就是常用的方法. 下图显示了数据中 ...

  2. 【Matplotlib】数据可视化实例分析

    数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...

  3. 数据可视化实例(十五):有序条形图(matplotlib,pandas)

    偏差 (Deviation) 有序条形图 (Ordered Bar Chart) 有序条形图有效地传达了项目的排名顺序. 但是,在图表上方添加度量标准的值,用户可以从图表本身获取精确信息. https ...

  4. 数据可视化实例(十二): 发散型条形图 (matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter10/chapter10 如果您想根据单个指标查看项目的变化情况,并可视化此差异的顺序和数量,那么散型条 ...

  5. 数据可视化实例(十三): 发散型文本 (matplotlib,pandas)

    偏差 (Deviation) https://datawhalechina.github.io/pms50/#/chapter11/chapter11 发散型文本 (Diverging Texts) ...

  6. 数据可视化基础专题(四):Pandas基础(三) mysql导入与导出

    转载(有添加.修改)作者:但盼风雨来_jc链接:https://www.jianshu.com/p/238a13995b2b來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  7. 数据可视化基础专题(八):Pandas基础(七) 数据清洗与预处理相关

    1.数据概览 第一步当然是把缺失的数据找出来, Pandas 找缺失数据可以使用 info() 这个方法(这里选用的数据源还是前面一篇文章所使用的 Excel ,小编这里简单的随机删除掉几个数据) i ...

  8. 数据可视化实例(十四):带标记的发散型棒棒糖图 (matplotlib,pandas)

    偏差 (Deviation) 带标记的发散型棒棒糖图 (Diverging Lollipop Chart with Markers) 带标记的棒棒糖图通过强调您想要引起注意的任何重要数据点并在图表中适 ...

  9. 数据可视化实例(十四):面积图 (matplotlib,pandas)

    偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...

随机推荐

  1. 【漏洞复现】Fastjson <=1.2.47远程命令执行

      0x01 漏洞概述 漏洞描述 Fastjson是一款开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBe ...

  2. 关于Ubuntu系统忘记密码的解决方法合集

    昨天有台机器的Ubuntu系统密码出了问题,一直提示错误.由于里面的数据比较重要,不建议重装系统,所以百度了一会,最终解决了忘记密码问题.整理了一个大合集分享出来. 第一种:参考教程如下       ...

  3. 为避免种族歧视,谷歌Chrome将不再使用“黑名单”等词

    GitHub 15.2k Star 的Java工程师成神之路,不来了解一下吗! GitHub 15.2k Star 的Java工程师成神之路,不来了解一下吗! 近日,美国黑人乔治‧佛洛伊德(Georg ...

  4. APP移动端测试

    重点: app测试的内容 add 命令  monkey命令 次重点:模拟器的安装 雷电 夜神 android 自带的模拟器 真机测试 简单了解云测Testing  腾讯云() 了解:市场有点移动端的操 ...

  5. 5种经典的Linux桌面系统

    最近一直在准备Linux相关的PPT,对于一个老码农来说Linux系统自然是比较熟悉了,随口可以说出好几种Linux的版本,然而对于计算机初学者可能就知道windows操作系统.也许你告诉他你可以安装 ...

  6. 07.Easymock的实际应用

    第一步下载对应的java包添加到工程中 并静态导入所需要的j类 import static org.easymock.EasyMock.*; 这里有的注意点 package com.fjnu.serv ...

  7. java中“”==“” equals hashcode的关系

    ava中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比 ...

  8. 5、struct2使用登陆的时候重定向功能,如果没有登陆,重定向到登陆页面

    1.实现这样一份功能,列如用户在进行某些操作的时候,如果没有登陆重定向到登陆页面 首先:我们创建一个功能操作页面,用户准备在该页面执行某些操作 在index.jsp中 <%@ page lang ...

  9. js事件入门(4)

    4.表单事件 表单事件处理主要用来验证表单,可以处理用户在表单上所做的任何操作. 4.1.onsubmit事件 当用户点击submit按钮来提交表单时,就会触发onsubmit事件,如果事件处理程序返 ...

  10. 谈谈如何绕过 TinyPNG 对上传图片数量的限制

    前端er, 又称为切图仔,平时经常需要用 PSD 导出 PNG 或 JPG,但是导出来的的图片一般比较大,往往需要用一些其他工具压缩后再发布到生产环境. 以前常用的做法是,使用 image-webpa ...