前言

数据分析就是将数据以各种图表的形式展现给领导,供领导做决策用,因此熟练掌握饼图、柱状图、线图等图表制作是一个数据分析师必备的技能。Python有两个比较出色的图表制作框架,分别是Matplotlib和Pyechart。本文主要讲述使用Matplotlib制作各种数据图表。

Matplotlib是最流行的用于绘制2D数据图表的Python库,能够在各种平台上使用,可以绘制散点图、柱状图、饼图等。

1、柱状图

是一种以长方形或长方体的高度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图可以用来比较数据之间的多少,可以用来观察某一事件的变化趋势,柱状图亦可横向排列,或用多维方式表达。

实现代码:

# 导入绘图模块

import matplotlib.pyplot as plt

# 构建数据

sales = [7125,12753,13143,8635]

# 中文乱码的处理,rcParams也可以用于设置图的分辨率,大小等信息

plt.rcParams['font.sans-serif'] =['SimHei']

plt.rcParams['axes.unicode_minus'] = False

# 绘图,第一个参数是x轴的数据,第二个参数是y轴的数据,第三个参数是柱子的大小,默认值是1(值在0到1之间),color是柱子的颜色,alpha是柱子的透明度

plt.bar(range(4), sales, 0.4,color='r', alpha = 0.8)

# 添加轴标签

plt.ylabel('销量')

# 添加标题

plt.title('水果2018年度销量')

# 添加刻度标签

plt.xticks(range(4),['苹果','香蕉','梨','猕猴桃'])

# 设置Y轴的刻度范围

plt.ylim([5000,15000])

# 为每个条形图添加数值标签

for x,y in enumerate(sales):

plt.text(x,y+100,'%s' %y,ha='center')

# 显示图形

plt.show()

效果图:

只需绘制柱状图的函数bar()改成barh()就可以将柱状图长方形或长方体从垂直方向变为水平方向。

实现代码:

# 导入绘图模块

import matplotlib.pyplot as plt

# 构建数据

sales = [7125,12753,13143,8635]

# 中文乱码的处理

plt.rcParams['font.sans-serif'] =['SimHei']

plt.rcParams['axes.unicode_minus'] = False

x = ['苹果','香蕉','梨','猕猴桃']

# 绘图

plt.barh(range(4), sales, 0.4,color='r', alpha = 0.8)

# 添加轴标签

plt.ylabel('销量')

# 添加标题

plt.title('水果2018年度销量')

# 添加刻度标签

plt.yticks(range(4),['苹果','香蕉','梨','猕猴桃'])

# 设置Y轴的刻度范围

plt.xlim([5000,15000])

# 为每个条形图添加数值标签

for x,y in enumerate(sales):

plt.text(y+0.2,x,'%s' %y,va='center')

# 显示图形

plt.show()

效果图:

除了bar()函数变成barh()之外。还有其他几个地方要做修改,在给每个条形图添加数值标签时,将ha='center'改为va='center',将添加x轴标签的方法从xlabel改为ylabel。

柱状图和折线图混合使用

柱状图可以和折线图混合使用,用来表示某一个数据的变化趋势,下面是例子的柱状图表示水果的年度销量,折线图表示水果1月份的销量。

代码:

# 导入绘图模块

import matplotlib.pyplot as plt

jan_sales = [3010,4029,5021,3056]

# 构建数据

sales = [7125,12753,13143,8635]

# 中文乱码的处理

plt.rcParams['font.sans-serif'] =['SimHei']

plt.rcParams['axes.unicode_minus'] = False

x = ['苹果','香蕉','梨','猕猴桃']

plt.plot(x,jan_sales,'r')# 折线 1 x 2 y 3 color

plt.plot(x,jan_sales,'g',lw=5)# 4 line w

# 绘图

plt.bar(range(4), sales, 0.4,color='b', alpha = 0.8)

# 添加轴标签

plt.ylabel('销量')

# 添加标题

plt.title('水果2018年度销量')

# 添加刻度标签

plt.xticks(range(4),['苹果','香蕉','梨','猕猴桃'])

# 设置Y轴的刻度范围

plt.ylim([2000,15000])

# 为每个条形图添加数值标签

for x,y in enumerate(sales):

plt.text(x,y+100,'%s' %y,ha='center')

# 显示图形

plt.show()

效果图:

2、折线图

折线图主要用于表示数据变化的趋势。折线图是直线将不同的点连接起来。

# 导入绘图模块

import matplotlib.pyplot as plt

#构建数据

jan_sales = [3010,4029,5021,3056]

# 中文乱码的处理

plt.rcParams['font.sans-serif'] =['SimHei']

plt.rcParams['axes.unicode_minus'] = False

x = ['苹果','香蕉','梨','猕猴桃']

#第一个参数是x轴,第二参数时y轴数据,第三个参数是线的颜色,第二个参数是线条的粗细

plt.plot(x,jan_sales,'r',lw=5)# 4 line w

# 添加标题

plt.title('水果2018年度1月份销量图')

plt.ylim([2000,15000])

# 为每个点添加数值标签

for x,y in enumerate(jan_sales):

plt.text(x,y+100,'%s' %y,ha='center')

# 显示图形

plt.show()

效果图:

折线图通过调用plot()方法绘制。

3、饼图

饼图主要是用来表示数据的占比,给人一眼就可以看出数据的占比大小。饼图使用pie()函数绘制。

import matplotlib.pyplot as plt

# 设置绘图的主题风格(不妨使用R中的ggplot分隔)

plt.style.use('ggplot')

# 构造数据

edu = [0.2515,0.3724,0.3336,0.0368,0.0057]

labels = ['苹果','香蕉','梨','猕猴桃','桔子']

explode = [0,0.1,0,0,0] # 用于突出显示大专学历人群

colors=['#FEB748','#EDD25D','#FE4F54','#51B4FF','#dd5555'] # 自定义颜色

# 中文乱码和坐标轴负号的处理

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

# 将横、纵坐标轴标准化处理,保证饼图是一个正圆,否则为椭圆

plt.axes(aspect='equal')

# 控制x轴和y轴的范围

plt.xlim(0,4)

plt.ylim(0,4)

# 绘制饼图

plt.pie(x = edu,# 绘图数据

explode=explode, # 突出显示香蕉人群

labels=labels, # 添加水果销量水平标签

colors=colors, # 设置饼图的自定义填充色

autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数

pctdistance=0.8,# 设置百分比标签与圆心的距离

labeldistance = 1.15, # 设置销量水平标签与圆心的距离

startangle = 180, # 设置饼图的初始角度

radius = 1.5, # 设置饼图的半径

counterclock = False, # 是否逆时针,这里设置为顺时针方向

wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'},# 设置饼图内外边界的属性值

textprops = {'fontsize':12, 'color':'k'}, # 设置文本标签的属性值

center = (1.8,1.8), # 设置饼图的原点

frame = 1)# 是否显示饼图的图框,这里设置显示

# 删除x轴和y轴的刻度

plt.xticks(())

plt.yticks(())

# 添加图标题

plt.title('2018年水果销量分析')

# 显示图形

plt.show()

效果图:

简单介绍下pie函数参数:

x: 指定绘图的数据

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

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

colors:指定饼图的填充色

autopct:设置百分比格式,如'%.1f%%'为保留一位小数

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

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

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

startangle:设置饼图的初始摆放角度, 180为水平;

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

counterclock:是否让饼图按逆时针顺序呈现, True / False;

wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等, 如wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}

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

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

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

4、散点图

散点图主要的作用是判断两个变量之间关系的强弱或者是否存在关系。

散点图由scatter()方法绘制。

import numpy as np

import matplotlib.pyplot as plt

# 数据个数

n = 50

# 均值为0, 方差为1的随机数

x = np.random.normal(0, 1, n)

y = np.random.normal(0, 1, n)

# 计算颜色值

color = np.arctan2(y, x)

# 绘制散点图

plt.scatter(x, y, s = 75, c = color, alpha = 0.5)

# 设置坐标轴范围

plt.xlim((-1.5, 1.5))

plt.ylim((-1.5, 1.5))

# 不显示坐标轴的值

plt.xticks(([-1,0,1,2,3,4]))

plt.yticks(([-1,0,1,2,3,4]))

plt.show()

效果图:

5、箱线图

箱线图一般用来展现数据大小、占比、趋势等等的呈现,其包含一些统计学的均值、分位数、极值等等统计量,因此,该图信息量较大,不仅能够分析不同类别数据平均水平差异(需在箱线图中加入均值点),还能揭示数据间离散程度、异常值、分布差异等等。

使用boxplot()方法绘制。

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

np.random.seed(2) #设置随机种子

df = pd.DataFrame(np.random.rand(5,4),

columns=['A', 'B', 'C', 'D'])#先生成0-1之间的5*4维度数据,再装入4列DataFrame中

df.boxplot() #也可用plot.box()

plt.show()

效果图:

6、雷达图

雷达图可以用来显示一个周期数值的变化,也可以用来展示对个对象/维度之间的关系

import numpy as np

import matplotlib.pyplot as plt

#标签

labels = np.array(['语文','数学','英语','生物','物理','化学'])

#数据个数

dataLenth = 6

#数据

data = np.array([7,4,3,6,4,8])

angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)

data = np.concatenate((data, [data[0]])) # 闭合

angles = np.concatenate((angles, [angles[0]])) # 闭合

fig = plt.figure()

ax = fig.add_subplot(111, polar=True)# polar参数!!

ax.plot(angles, data, 'bo-', linewidth=2)# 画线

ax.fill(angles, data, facecolor='r', alpha=0.25)# 填充

ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei")

ax.set_title("matplotlib雷达图", va='bottom', fontproperties="SimHei")

ax.set_rlim(0,10)

ax.grid(True)

plt.show()

效果图:

7、气泡图

气泡图用于判断3个变量之间是否存在某种关系。它跟散点图有点类似,只不过气泡图以气泡大小作为新的维度

import pandas as pd

import matplotlib.pyplot as plt

import pandas as pd

d = {"时间":pd.Series([2006,2007,2008,2009,2010]),

"数量":pd.Series([10,200,120,150,300]),

"大小":pd.Series([50,130,40,50,160]),

"分类":pd.Series([1,2,0,1,2]),

"判断":pd.Series([True,True,True,True,True])}

df=pd.DataFrame(d)

#先定义气泡大小,rank 函数将大小列进行大小分配,越大的值分配结果也越高

#n 为倍数,用来调节气泡的大小,且看后头

size=df['大小'].rank()

n=20

#定义一个字典,将颜色跟对应的分类进行绑定

color={0:'red',1:'blue',2:'orange'}

#增加color的参数,用列表解析式将data分类中的每个数据的数字映射到前面color的颜色中

plt.scatter(df['数量'],df['大小'],color=[color[i] for i in df['分类']],s=size*n,alpha=0.6)

plt.show()

效果图:

气泡图用也是scatter方法绘制,和散点图一样。差别在于点的大小不一样,散点图的点都是一样的,而气泡图点的大小不一样。

以上就是柱状图、散点图、气泡图、折线图的实现方式。希望给大伙带来帮助。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

python数据可视化案例销售数据_Python数据可视化教程之Matplotlib实现各种图表实例...相关推荐

  1. python列表元素为中文_python入门基础教程之Python list列表修改元素

    python提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个). 修改单个元素 修改单个元素非常简单,直接对元素赋值即可.请看下面的例子: nums = ...

  2. Python可视化学习——使用JSON进行数据转换、pyecharts模块调用以及可视化案例的介绍(可视化案例数据暂无),柱状图及动态柱状图的构建

    数据可视化 可视化效果一:2020年印美日新冠累计确诊人数 2020年是新冠疫情爆发的一年,随着疫情的爆发,国内外确诊人数成了大家关心的热点,相信大家都有看过类似的疫情报告.本案例对印度美国日本三个国 ...

  3. python数据可视化的特点_Python数据可视化, 看这一篇就够了

    开个玩笑了,其实可视化想做深入,只看这一篇,必然是不够的了~ 入个门估计差不多可以的. 为什么写这一篇呢?算是继续上一篇最嗨的歌最快的车:Data Fountain光伏发电量预测 Top1 开源分享​ ...

  4. python 映射和反映射_Python 数据可视化:几何对象和美学映射

    从上一课的初步体验中,我们已经获悉,只要加载了数据,并创建了"美学映射"之后,也就有了绘图的基础,然后要思考的就是:做什么形状的图,是散点图,还是箱线图?这些图就是所谓的" ...

  5. 大数据可视化案例分析_Tableau数据可视化分析案例

    0x00 Tableau简介 Tableau是一款定位于数据可视化敏捷开发和实现的商务智能展现工具,可用来实现交互的.可视化的分析和仪表盘应用. Tableau提供了体验感良好且易用的使用界面,在处理 ...

  6. python数据科学导论 中南_Python数据科学导论

    译者序 前言 关于本书 关于作者 关于封面插图 章 大数据世界中的数据科学1 1.1 数据科学和大数据的好处和用途2 1.2 数据种类3 1.2.1 结构化数据3 1.2.2 非结构化数据3 1.2. ...

  7. python数据分析培训内容可以_Python数据分析师

    阶段一 学完后能达到什么水平? 数据分析师认知篇 说 明:0基础入学,5大进阶之路,8大课程阶段,35+课程,1000+学时, 18大行业经典案例,两大商业项目实战!人工智能是你的终极目标! 课程时长 ...

  8. python分类变量相关性分析_Python数据科学:相关分析

    目前手上有两本书,一本<利用Python进行数据分析>,一本<Python数据科学>.app 对于学习什么东西,都有它的「道」和「术」.「道」即原理,「术」即技巧.dom 经过 ...

  9. python数据科学常国珍_python数据科学:技术详解与商业实践

    前言 章数据科学家的武器库 1.1数据科学的基本概念 1.2数理统计技术 1.2.1描述性统计分析 1.2.2统计推断与统计建模 1.3数据挖掘的技术与方法 1.4描述性数据挖掘算法示例 1.4.1聚 ...

最新文章

  1. 子网掩码和网关的关系
  2. python怎么用matplotlib_Python-如何在matplotlib中更新图?
  3. 华为怎么删除自带的音乐_原来华为手机相册隐藏剪辑功能!按下这个开关,还能制作音乐相册...
  4. P3399 丝绸之路(线性二维dp)
  5. Oracle基本数据范例存储名堂浅析
  6. Qt实现界面滑动切换效果
  7. 浅谈Java及应用学java
  8. RainMeter使用教程一篇
  9. Java文件上传【通用】
  10. Boss直聘招聘数据分析岗位小分析
  11. PHP获得某天某星期某月的开始结束时间
  12. push rejected by remote
  13. 微博热搜数据变化趋势视频化展示
  14. mac tortoisesvn客户端_TortoiseSVN
  15. Julia学习笔记(一)——入门
  16. 上汽赛可携手几维安全 赋能移动出行安全新业态
  17. 计算电话费练习【20171121】
  18. 基于ArduPilot的旋翼式无人机飞行器开发系列(四,四轴无人机的各个组件详解及其焊接,组装)---正在更新中
  19. 2019山东大学计算机类录取分数线,2020山东大学录取分数线一览表(含2018-2019历年)...
  20. 反色(顺序)C C++

热门文章

  1. html5支持的几种音频格式介绍
  2. 跨境电商支付结算的流程
  3. Linux 零拷贝技术
  4. office2019学习笔记
  5. 教你如何辨清常见的五种红木
  6. 今天/没什么事/这些天/都没什么事
  7. 大数据私房菜--漫漫长路之CDH6.2.0搭建
  8. ZEED品牌升级 推出加密吉祥物Zeeddy
  9. SQL 调优的几种方式
  10. Linux下利用U盘制作winpe启动盘