数据可视化--图表辅助元素的定制

1、什么是图标辅助?

图表的辅助元素是指除了根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明。

2、设置刻度范围和刻度标签

当绘制图表时,坐标轴的刻度范围和刻度标签都与数据的分布有着直接的联系,即坐标
轴的刻度范围取决于数据的最大值和最小值。在使用 matplotlib 绘图时若没有指定任何数据,
x 轴和 y 轴的范围均为 0.05 ~ 1.05,刻度标签均为 [-0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2] ;若指
定了 x 轴和 y 轴的数据,刻度范围和刻度标签会随着数据的变化而变化。matplotlib 提供了重
新设置坐标轴的刻度范围和刻度标签的方式,下面分别进行介绍。
2.1.设置刻度范围
使用 pyplot 模块的 xlim() 和 ylim() 函数分别可以设置或获取 x 轴和 y 轴的刻度范围。
xlim() 函数的语法格式如下所示 :
xlim(left=None, right=None, emit=True, auto=False, * , xmin=None,
xmax=None)
该函数常用参数的含义如下。
·left :表示 x 轴刻度取值区间的左位数。
·right :表示 x 轴刻度取值区间的右位数。
·emit :表示是否通知限制变化的观察者,默认为 True。
·auto :表示是否允许自动缩放 x 轴,默认为 True。
·xmin :表示 x 轴刻度的最小值。
·xmax :表示 x 轴刻度的最大值。
此外,Axes 对象可以使用 set_xlim() 和 set_ylim() 方法分别设置 x 轴和 y 轴的刻度范围。

 2.2、设置刻度标签
使用 pyplot 模块的 xticks() 和 yticks() 函数分别可以设置或获取 x 轴和 y 轴的刻度线位置
和刻度标签。xticks() 函数的语法格式如下所示 :
xticks(ticks=None, labels=None, ** kwargs)
该函数的 ticks 参数表示刻度显示的位置列表,它还可以设为空列表,以此禁用 x 轴的刻
度 ;labels 表示指定位置刻度的标签列表。
此外,Axes 对象可以使用 set_xticks() 或 set_yticks() 方法分别设置 x 轴或 y 轴的刻度线位置,
使用 set_xticklabels() 或 set_yticklabels() 方法分别设置 x 轴或 y 轴的刻度标签。


接下来让我们举几个例子来说明如何使用

一、2019年中国电影票房排行榜

根据表的数据,将“电影名称”一列的数据作为 y 轴的刻度标签,将“总票房(亿元)”一列的数据作为刻度标签对应的数值,使用 barh() 绘制 2019 年中国电影票房排行榜 Top15 的条形图,并为条形图的坐标轴添加标签和刻度标签,具体代码如下。

#导入模块
import matplotlib.pyplot as plt
import numpy as np
#设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams["axes.unicode_minus"] = False
#设置电影名称
labels = [" 哪吒之魔童降世 ", " 流浪地球 ", " 复仇者联盟 4: 终局之战 ",
       " 疯狂的外星人 ", " 飞驰人生 ", " 烈火英雄 ", " 蜘蛛侠 : 英雄远征 ",
       " 速度与激情 : 特别行动 ", " 扫毒 2 : 天地对决 ", " 大黄蜂 "," 惊奇队长 ",
       " 比悲伤更悲伤的故事 ", " 哥斯拉 2: 怪兽之王 ", " 阿丽塔 : 战斗天使 ",
       " 银河补习班 "]
#导入票房数据
bar_width = [48.57, 46.18, 42.05, 21.83, 17.03, 16.70, 14.01, 13.84,
        12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64]
#面向对象
y_data = range(len(labels))
fig = plt.figure()
ax = fig.add_subplot(111)
ax.barh(y_data, bar_width, height=0.2, color='orange')
# 设置 x 轴和 y 轴的标签
ax.set_xlabel(" 总票房 ( 亿元 )")
ax.set_ylabel(" 电影名称 ")
# 设置 y 轴的刻度线位置、 刻度标签
ax.set_yticks(y_data)
ax.set_yticklabels(labels)
#展示图表
plt.show()

图表展示:

二、支付宝月账单报告(添加标题、图例)

添加标题利用title()函数:title(label,fontdict=None,loc='center',pad=None,**kwargs)    

使用说明:
   label :表示标题的文本。    
   fontdict : 表示控制标题文本样式的字典。
   loc : 表示标题的对齐样式,包括"left'、'right'和'center'三种取值,默认取为'center’,即居中显示标题。
   pad :表示标题与图表顶部的距离,默认为None。

添加图例利用legend()函数:legend(handles, labels, loc, bbox_to_anchor, ncol, title, shadow,fancybox,
       *args,**kwargs)

 利用饼图来展现,代码示例如下:

#导入模块
import numpy as np
import matplotlib.pyplot as plt
#设置中文
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#外侧说明文字
kinds=['购物','人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
#导入原有数据
money_scale=[800/3000,100/3000,1000/3000,300/3000,
200/3000,200/3000,200/3000,200/3000]
#爆炸程度
dev_position=[0.1,0.1,0.3,0.1,0.1,0.1,0.1,0.1]
#创建画布并添加绘画区域:
fig = plt.figure( )                #创建代表画布的Figure类的对象fig
ax = fig.add_subplot(111)          #在画布fig上添加坐标系风格的绘画区域ax
 
# 绘制图表
ax.pie(money_scale,autopct='%.1f%%',shadow=True,
       explode=dev_position,startangle=90) 
#添加标题
plt.title('支付宝月账单报告')      
plt.legend(kinds,loc='upper right',bbox_to_anchor=[1.3,1.1])
#图像展示  
plt.show()                 
 图像展示:
三、汽车速度与制动距离的关系(添加网格)

显示网格利用grid()函数来绘制: grid(b=None,which='major',axis='both', **kwargs)

使用说明:

b:表示是否显示网格。若提供其他关键字参数,则b参数设为True。
which :表示显示网格的类型,支持major、minor、both 这3种类型,默认为major。
axis :表示显示哪个方向的网格,该参数支持both、x和y这3个选项,默认为both。

linewidth 或lw:表示网格线的宽度。

#导入模块
import numpy as np
import matplotlib.pyplot as plt
#设置中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 准备 x 轴和 y 轴的数据
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
                       17.7, 24.1, 31.5, 39.9, 49.2,
                       59.5, 70.8, 83.1, 96.4, 110.7,
                       126.0, 142.2, 159.4, 177.6, 196.8])
 
 # 绘制气泡图
area=np.linspace(20,300,20)         
#创建画布并添加绘画区域:(面向对象)
fig = plt.figure( )                
ax = fig.add_subplot(111)         
#绘制图表
ax.scatter(x_speed,y_distance,s=area)
 
#设置x轴、y轴的标签、刻度标签
plt.xlabel('速度(km/h)')
plt.ylabel('制动距离(m)')
 
plt.xticks(x_speed)
#显示网格              
plt.grid(b=True,linewidth=0.3)  
# 展示图表
plt.show()

图像展示:
 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值