数据可视化笔记:柱状图

数据可视化笔记:柱状图

1.1 一、基础配置

在进行数据可视化之前,需要对Matplotlib进行一些基础配置,以确保图表能够正确显示中文以及设置合适的分辨率和大小。

from matplotlib import pyplot as plt
import numpy as np

# 设置中文字体为黑体,不包含中文负号
# 由于不同操作系统支持的字体不同,SimHei是Windows系统下的黑体,如果在其他系统中可能需要更换为相应支持的中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
# 设置图像的分辨率,这里设置为100,分辨率越高图像越清晰,但文件大小也会相应增加
plt.rcParams['figure.dpi'] = 100
# 设置图像显示的大小,这里设置宽度为5,高度为3,单位为英寸
plt.rcParams['figure.figsize'] = (5, 3)

1.2 二、柱状图

柱状图是一种常用的数据可视化图表,用于比较不同类别之间的数据大小。

1.2.1 竖直柱状图

1.2.1.1 基本语法
plt.bar(x, height, width=0.8, bottom=None, align='center', **kwargs)
  • x:表示柱子的横坐标位置,可以是一个列表或数组。
  • height:表示柱子的高度,对应的数据值。
  • width:柱子的宽度,默认值为0.8。
  • bottom:柱子的起始位置,默认为None,表示从0开始。
  • align:柱子的对齐方式,'center' 表示居中对齐,'edge' 表示边缘对齐。
  • **kwargs:其他可选参数,如颜色、边框等。
1.2.1.2 基本示例
x = range(5)
data = [5, 20, 15, 25, 10]
# 设置图表的标题
plt.title("基本柱状图")
# 设置网格线,ls表示线型,这里设置为虚线;alpha表示透明度,范围从0到1
plt.grid(ls="--", alpha=0.5)
# 绘制柱状图
plt.bar(x, data)
# 显示图表
plt.show()

在这里插入图片描述

1.2.1.3 常用参数
  • bottom:设置柱状图起始位置。例如,如果想让柱子从某个值开始,可以通过设置 bottom 参数实现。
x = range(5)
data = [5, 20, 15, 25, 10]
bottom_value = 5
plt.bar(x, data, bottom=bottom_value)
plt.show()

在这里插入图片描述

  • color/facecolor:设置柱状图颜色。可以使用颜色名称(如 'red''blue')或十六进制颜色码(如 '#FF0000')。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, color='green')
plt.show()

在这里插入图片描述

  • edgecolor/ec:边框颜色。同样可以使用颜色名称或十六进制颜色码。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black')
plt.show()

在这里插入图片描述

  • linestyle/ls:边框线型。例如 '-' 表示实线,'--' 表示虚线。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black', linestyle='--')
plt.show()

在这里插入图片描述

  • linewidth/lw:边框宽度。可以设置一个数值来调整边框的粗细。
x = range(5)
data = [5, 20, 15, 25, 10]
plt.bar(x, data, edgecolor='black', linewidth=2)
plt.show()

在这里插入图片描述

  • tick_label:柱子刻度标签。用于为每个柱子添加自定义的标签。
x = range(5)
data = [5, 20, 15, 25, 10]
labels = ['A', 'B', 'C', 'D', 'E']
plt.bar(x, data, tick_label=labels)
plt.show()

在这里插入图片描述

1.2.2 同位置多柱状图

当需要在同一位置比较多个类别的数据时,可以使用同位置多柱状图。

countries = ['挪威', '德国', '中国', '美国', '瑞典']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]

# 生成柱子的横坐标位置
x = np.arange(len(countries))
# 设置柱子的宽度
width = 0.2

# 绘制金牌柱状图
plt.bar(x - width, gold, width, label='金牌')
# 绘制银牌柱状图
plt.bar(x, silver, width, label='银牌')
# 绘制铜牌柱状图
plt.bar(x + width, bronze, width, label='铜牌')

# 设置x轴刻度标签
plt.xticks(x, countries)
# 显示图例
plt.legend()
# 显示图表
plt.show()

在这里插入图片描述

1.2.3 堆叠柱状图

堆叠柱状图用于展示多个类别数据的累计情况。

countries = ['挪威', '德国', '中国', '美国', '瑞典']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]

# 绘制金牌柱状图
plt.bar(countries, gold, label='金牌')
# 绘制银牌柱状图,起始位置为金牌的高度
plt.bar(countries, silver, bottom=gold, label='银牌')
# 绘制铜牌柱状图,起始位置为金牌和银牌的高度之和
plt.bar(countries, bronze, bottom=np.array(gold)+np.array(silver), label='铜牌')

# 显示图例
plt.legend()
# 显示图表
plt.show()

在这里插入图片描述

1.3 三、水平柱状图

水平柱状图与竖直柱状图类似,只是柱子的方向变为水平。

1.3.1 基本语法

plt.barh(y, width, height=0.8, left=None, **kwargs)
  • y:表示柱子的纵坐标位置。
  • width:表示柱子的宽度,对应的数据值。
  • height:柱子的高度,默认值为0.8。
  • left:柱子的起始位置,默认为None,表示从0开始。
  • **kwargs:其他可选参数,如颜色、边框等。

1.3.2 示例

movie = ['新蝙蝠侠', '狙击手', '奇迹笨小孩']
day1 = [4053, 2548, 1543]
day2 = [7840, 4013, 2421]

# 设置柱子的高度
height = 0.3
# 绘制第一天的水平柱状图
plt.barh(np.arange(len(movie)), day1, height, label='第一天')
# 绘制第二天的水平柱状图,纵坐标位置在第一天的基础上偏移柱子高度
plt.barh(np.arange(len(movie)) + height, day2, height, label='第二天')

# 设置y轴刻度标签
plt.yticks(np.arange(len(movie)) + height/2, movie)
# 显示图例
plt.legend()
# 显示图表
plt.show()

在这里插入图片描述

总结

通过对Matplotlib中柱状图与饼图的系统学习与实践,我深刻体会到数据可视化在数据分析中的重要性。柱状图凭借其直观的对比性,无论是竖直柱状图对单类别数据的清晰展示,还是同位置多柱状图、堆叠柱状图对多类别数据的差异化呈现,都能有效帮助我们洞察数据间的数量关系与变化趋势;水平柱状图则为数据展示提供了不同视角,尤其适用于类别名称较长的场景。饼图则以独特的比例呈现方式,将各部分与整体的关系一目了然地展现出来,通过对各参数的灵活设置,可实现对重点数据的突出与强调。

在实际应用中,基础配置环节解决了图表显示的常见问题,确保了图表的完整性与可读性;各类图表参数的运用则赋予了图表丰富的表现力与个性化特征;而实用技巧,如标签旋转、数据标注、网格线设置和图像保存等功能,进一步提升了图表的专业性与实用性。这些知识与技能不仅让我能够将数据转化为清晰美观的可视化成果,也为今后深入的数据探索与分析工作奠定了坚实基础,未来在面对不同类型的数据时,能够更加得心应手地选择合适的图表类型与优化方式,以更好地服务于数据信息的有效传达与解读 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值