python数据可视化第三章图表辅助元素的定制

一、图表常用的辅助元素
图表的辅助元素是指除了根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴、标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明。
在这里插入图片描述
1、坐标轴
坐标轴是由刻度标签、刻度线、轴脊和坐标轴标签组成。在这里插入图片描述
2、设置坐标轴的标签,刻度范围,刻度标签
2.1 设置x轴的标签

xlabel(xlabel,fontdict=None,labelpad=None,**kwargs)

该函数参数如下:

xlabel:表示x轴标签的文本
fontdict:表示控制标签文本样式的字典
labelpad:表示标签与坐标轴边框(包括刻度与刻度标签)的距离
2.2 设置y轴的标签
只要把代码中x换成y即可。

ylabel(ylabel, fontdict=None, labelpad=None,**kwargs)

2.3设置刻度范围

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轴刻度的最大值
同理也可以换位ylim()
2.4 设置刻度标签
xticks(ticks=None,labels=None,**kwargs)
ticks:表示刻度显示的位置列表
labels:表示指定位置刻度的标签列表
2.5 添加标题

title(label, fontdict=None, loc='center', pad=None, **kwargs)

该函数常用参数的含义如下:

label:表示标题的文本
fontdict:表示控制标题文本样式的字典
loc:表示标题的对齐样式,包括’left’,‘right’和’center’三种取值,默认取值为’center’,即居中显示标题
pad:表示标题与图表顶部的距离,默认为None
同样的也可以用set_title()函数添加标题
3、添加图例
handles:表示由图形标识构成的列表
labels:表示由图例项构成的列表
loc:用于控制图例在图表中的位置.
bbox_to_anchor:用于控制图例的布局,该参数接受一个包含两个数值的元组,其中第一个数值用于控制图例显示的水平位置,值越大则说明图例显示的位置越偏右;第二个数值用于控制图例的垂直位置,值越大则说明图例显示的位置越偏上
ncol:表示图例的列数,默认值为1
title:表示图例的标题,默认为None
shadow:控制图例后面显示阴影,默认值为None
fancybox:控制是否为图例设置圆角边框,默认值为None
4、显示网格

grid(b=None,which='major',axis='both',**kwargs)

该函数参数如下:

b:表示是否显示网格,若提供其它关键字参数,则b参数设为True
which:表示显示网格的类型,支持major,minor,both这三种类型,默认为major
axis:表示显示哪个方向的网格,该参数支持both、x和y这三个选项,默认为both
linewidth或lw:表示网格线的宽度
如果坐标轴没有刻度,就无法显示网格.
5. 添加参考线和参考区域
5.1 添加水平参考线

axhline(y=0,xmin=0,xmax=1,linestyle='-',**kwargs)

y:表示水平参考线的纵坐标
xmin:表示水平参考线的起始位置,默认为0
xmax:表示水平参考线的终止位置,默认为1
linestyle:表示水平参考线的的类型,默认为实线
5.2 添加垂直参考线
将上面的axhiline改成axline,x轴换成y轴即可.
5.3 添加水平参考区域

axhspan(ymin,ymax,xmin=0,xmax=1,**kwargs)

ymin:表示水平跨度的下限,以数据为单位
ymax:表示水平跨度的上限,以数据为单位
xmin:表示垂直跨度的下限,以轴为单位,默认为0
xmax:表示垂直跨度的上限,以轴为单位,默认为1
5.4 添加垂直参考区域

axvspan(xmin,xmax,ymin=0,ymax=1,**kwargs)

xmin:表示垂直跨度的下限
xmax:表示垂直跨度的上限
6. 添加注释文本
指向型注释文本一般是指真丢图表某一部分的特定说明,无指向型注释文本一般是针对图表整体的特定说明

6.1 添加指向型注释文本

annotate(x,xy,*args,**kwargs)

s:表示注释文本的内容
xy:表示被注释的点的坐标位置,接收元组(x,y)
xytext:表示注释文本所在的坐标位置,接收元组(x,y)
xycoords:表示xy的坐标系统,默认值为’data’,代表域折线图使用相同的坐标系统
arrowprops:表示指示箭头的属性字典
bbox:表示注释文本的边框属性字典
6.2 添加无指向型注释文本

text(x,y,s,fontdict=None, withdash =<deprecated parameter>,**kwargs)

该函数常用参数含义如下:

x,y:表示注释文本的位置
s:表示注释文本的内容
fontdict:表示控制字体的字典
bbox:表示注释文本的边框属性字典
horizontalalignment或ha:表示水平对齐方式,可以取值为center、right或left.
vertcalalignment或va:表示垂直对齐的方式,可以取值为center、top、bottom、baseline或center_baseline.
7.添加表格
7.1 添加自定义样式表格
cellText:表示表格单元格中的数据,是一个二维列表
cellColours:表示单元格的背景颜色
cellLoc:表示单元格文本的对齐方式,支持’left’,‘right’,‘center’三种取值,默认为’right’.
colWidths:表示每列的宽度
rowLabels:表示行标题的文本
rowColours:表示行标题所在单元格的背景颜色
rowLoc:表示行标题的对齐方式
colLabels:表示列标题的文本
colColours:表示列标题所在单元格的背景颜色
colLoc:表示列标题的对齐方式
loc:表示表格与绘图区域的对齐方式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
y1, y2 = np.sin(x),np.cos(x)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title('2020080603042')
plt.show()

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
y1, y2 = np.sin(x),np.cos(x)
lines = plt.plot(x,y1,x,y2)
plt.axvline(x=0,linestyle='--')
plt.axhline(y=0,linestyle='--')
plt.legend(lines, ['正弦','余弦'],shadow=True,fancybox=True)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.grid(b=True,axis='y',linewidth=1.3)
plt.xlim(x.min() *1.5, x.max() *1.5)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$',r'$-\pi/2$',r'$0$',r'$-\pi/2$',r'$-\pi$',])
plt.axvspan(xmin=0.5,xmax=2.0,alpha=0.3)
plt.axhspan(ymin=0.5,ymax=1.0,alpha=0.3)
plt.annotate("最小值",xy=(-np.pi / 2, -1.0),
            xytext=(-(np.pi / 2), -0.5),
            arrowprops=dict(arrowstyle="->"))
plt.title('2020080603042')
plt.text(3.10,0.10,"y=sin(x)",bbox=dict(alpha=0.2))
plt.table(cellText=[[6,6,6,],[8,8,8]],
         colWidths=[0.1]*3,
         rowLabels=['第一行','第二行'],
         colLabels=['第一行','第二行','第三行'],loc='lower right')
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
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,16.70,14.01,13.81,
           12.98,11.89,10.25,9.46,9.27,8.88,8.64,8.20]
y_data=range(len(labels))
fig=plt.figure()
ax=fig.add_subplot(111)
ax.barh(y_data,bar_width,height=0.2,color='pink')
ax.set_xlabel("总票房(亿元)")
ax.set_ylabel("电影名称")
ax.set_yticks(y_data)
ax.set_yticklabels(labels)
plt.title('2020080603042')
plt.show()

在这里插入图片描述

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]
plt.pie(money_scale,labels=kinds,autopct='%3.lf%%',
shadow=True,explode=dev_position,startangle=90)#逆时针开始绘制90度
plt.title('2020080603042')
plt.legend(kinds,loc='upper right',bbox_to_anchor=[1.3,1.1])
plt.show()

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
men_means=(90.5,89.6,88.7,88.6,86.5,84.6)
women_means=(92.8,87.0,90.5,85.4,89.6,90.2)
ind=np.arange(len(men_means))
width=0.2
fig=plt.figure()
ax=fig.add_subplot(111)
ax.bar(ind-width/2,men_means,width,label='男生平均成绩')
ax.bar(ind+0.2,women_means,width,label='女生平均成绩')
ax.set_title('高二各班男生、女生英语平均成绩')
ax.set_ylabel('分数')
ax.set_xticks(ind)
ax.set_xticklabels(['高二1班','高二2班','高三3班','高三4班','高三5班','高三6班'])
ax.axhline(88.5,ls='--',linewidth=1.0,label='全体平均成绩')
ax.legend(loc="lower right")
plt.title('2020080603042')
plt.show()

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
x=np.arange(1,8)
y=np.array([10770,16780,24440,30920,37670,48200,57270])
bar_rects=plt.bar(x,y,tick_label=["FY2013","FY2014","FY2015","FY2016","FY2017","FY2018","FY2019"],width=0.5)
def autolabel(rects):
    for rect in rects:
        height=rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2,height+300,s='{}'.format(height),ha='center',va='bottom')
autolabel(bar_rects)
plt.ylabel('GMV(亿元)')
plt.title('2020080603042')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值