Python数据分析第九课:常见图形的绘制

一、柱状图

柱状图使用场合是二维数据集(每个数据点包括两个值x和y),但只有一个维度需要比较。例如:年销售而,“年份”和“销售额”就是它的两个纬度,但只需要比较“销售额”这一个维度。

柱状图利用柱子的高度,反映数据的差异。肉眼对高度差异很敏感,辨识效果非常好。

import matplotlib.pyplot as plt

x = ['战狼2','哪吒之魔童降世','红海行动','美人鱼','流浪地球','中国机长']
y = [56.39,49.34,36.22,33.9,46.18,28.84]

现在,我们要绘制一张柱形图,用来描述每个电影的票房总数之间的对比。

折线图的绘制使用plt.plot(),而绘制柱形图我们使用plt.bar()函数:

plt.bar(x,height,width,color)

各个参数的含义如下:

  • x:记录x轴上的标签
  • height:记录乜咯柱形的高度
  • width:设置柱形的宽度
  • color:设置柱形的颜色,传入颜色值的列表,例如[‘blue’,‘green’,‘red’]
%matplotlib inline
import matplotlib.pyplot as plt

# 定义全局字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

x = ['战狼2','哪吒之魔童降世','红海行动','美人鱼','流浪地球','中国机长']
y = [56.39,49.34,36.22,33.9,46.18,28.84]

# 设置画布大小
plt.figure(figsize=(20,8),dpi=80)

# 绘制柱状图
rects = plt.bar(x,y,width=0.3,color=['red','green','blue','cyan','yellow','gray'])
plt.xticks(x)
plt.yticks(range(0,61,5),range(0,61,5))

# 在柱形图上,添加标注
for rect in rects:
    height = rect.get_height()
    plt.text(rect.get_x()+rect.get_width()/2,height+0.5,str(height),ha='center')

plt.show()

在这里插入图片描述

我们将柱形的高度数据标注在了柱形的上方。我们使用了plt.text( )函数为每个柱形标注高度数值。

plt.text(x,y,s,ha,va)

参数的含义为:

  • x,y:分别为标注数据的x和y坐标
  • s:记录标注的内容
  • ha,va:分别用于设置水平和垂直方向的对其方式

另外,rects是plt.bar()的返回值,里面包含了每一个柱形。数值标注需要逐个添加,所以我们设置了一个循环来完成这项操作。

同时,我们通过get_height、get_x()、get_width()等方法,分别拿到柱形图的高度,x轴的坐标,柱形图的宽度等数据。

二、直方图

直方图一般用来描述等距数据,柱状图一般用来描述名称(类别)数据或顺序数据。直观上,直方图各个长条形是衔接在一起的,表示数据间的数学关系;条形图各长条形之间留有空隙,区分不同类。

绘制直方图使用Plt.hist()函数:

plt.hist(data,bins,facecolor,edgecolor)

其参数含义为:

  • data:绘图用到的数据
  • bins:直方图的条形书目
  • facecolor:矩形的填充颜色
  • edgecolor:条形的边框颜色

绘制直方图的重点在于设置组距,然后分为若干组。

%matplotlib inline
from matplotlib import pyplot as plt

# 设置全局字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

# 电影时长数据
time = [131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114,
        119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 
        136, 126, 134
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值