可视化实验⼀
实验⽬的
掌握text,xlabel,ylabel,title,annotate等函数的使⽤
熟悉掌握使⽤matplotlib画图的标注⽅法
实验原理
确定坐标范围
plt.axis([xmin, xmax, ymin, ymax]):axis()命令给定了坐标范围
xlim(xmin, xmax)和ylim(ymin, ymax)来调整x,y坐标范围
xlable(), ylable()⽤于添加x轴和y轴标签
matplotlib.pyplot.xlabel(label, fontdict=None, labelpad=None, **kwargs)
matplotlib.pyplot.ylabel(label, fontdict=None, labelpad=None, **kwargs)
在⼀个figure的⼦图axis区域上设置标签是⽤set_xlabel或set_ylabel。
text设置⽂字说明
text()可以在图中的任意位置添加⽂字,并⽀持LaTex语法
text()函数原型:Text(x=0, y=0, text='', color=None, verticalalignment='baseline', horizontalalignment='left', multialignment=None, fontproperties=None, rotation=None, linespacing=None, rotation_mode=None, usetex=None, wrap=False, **kwargs)
(1)text参数说明
x,y:表⽰坐标轴上的值
string:表⽰说明⽂字
fontsize:表⽰字体⼤⼩
verticalalignment:垂直对齐⽅式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
horizontalalignment:⽔平对齐⽅式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
xycoords选择指定的坐标轴系统:
figure points points from the lower left of the figure 点在图左下⽅
figure pixels pixels from the lower left of the figure 图左下⾓的像素
figure fraction fraction of figure from lower left 左下⾓数字部分
axes points points from lower left corner of axes 从左下⾓点的坐标
axes pixels pixels from lower left corner of axes 轴左下⾓像素
axes fraction fraction of axes from lower left 左下⾓轴的部分
data use the coordinate system of the object being annotated(default) 使⽤的坐标系统的对象是annotated(默认))
polar(theta,r) if not native ‘data’ coordinates
arrowprops #箭头参数,参数类型为字典dict
width the width of the arrow in points 箭头的宽度
headwidth the width of the base of the arrow head in points 箭头顶点的宽度
headlength the length of the arrow head in points 箭头的长度
shrink fraction of total length to ‘shrink’ from both ends 从两端收缩到总长度的部分
facecolor 箭头颜⾊
bbox给标题增加外框 ,常⽤参数如下:
boxstyle⽅框外形
facecolor(简写fc)背景颜⾊
edgecolor(简写ec)边框线条颜⾊
edgewidth边框线条⼤⼩
bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k',lw=1 ,alpha=0.5) #fc为facecolor,ec为edgecolor,lw为lineweight title设置图像标题
title函数原型:matplotlib.pyplot.title(s, *args, **kwargs)
参数说明:
s:str类型,为图添加标题⽂本
fontdict:dict类型,⼀个控制标题⽂本外观的字典,默认的字体是:
{‘fontsize’: rcParams[‘axes.titlesize’], ‘fontweight’ : rcParams[‘axes.titleweight’], ‘verticalalignment’: ‘baseline’, ‘horizontalalignment’: loc}
loc:str类型,可选项{‘center’, ‘left’, ‘right’},设置标题的位置,默认为‘center’
其他参数kwargs:其他关键字参数是⽂本属性,与text⽂本属性相似。
(1)title其它参数
string:表⽰说明⽂字
fontsize设置字体⼤⼩,默认12,可选参数 ['xx-small', 'x-small', 'small', 'medium', 'large','x-large', 'xx-large']
fontweight设置字体粗细,可选参数 ['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black']
fontstyle设置字体类型,可选参数[ 'normal' | 'italic' | 'oblique' ],italic斜体,oblique倾斜
verticalalignment设置⽔平对齐⽅式 ,可选参数 : 'center' , 'top' , 'bottom' ,'baseline'
horizontalalignment设置垂直对齐⽅式,可选参数:left,right,center
rotation(旋转⾓度)可选参数为:vertical,horizontal 也可以为数字
alpha透明度,参数值0⾄1之间
backgroundcolor标题背景颜⾊
bbox给标题增加外框 ,常⽤参数如下:
boxstyle⽅框外形
facecolor(简写fc)背景颜⾊
edgecolor(简写ec)边框线条颜⾊
edgewidth边框线条⼤⼩
(2)title例⼦:
plt.title('Interesting Graph',fontsize='large',fontweight='bold') 设置字体⼤⼩与格式
plt.title('Interesting Graph',color='blue') 设置字体颜⾊
plt.title('Interesting Graph',loc ='left') 设置字体位置
plt.title('Interesting Graph',verticalalignment='bottom') 设置垂直对齐⽅式
plt.title('Interesting Graph',rotation=45) 设置字体旋转⾓度
plt.title('Interesting',bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 )) 标题边框
返回值:text类型,表⽰标题的matplotlib⽂本实例。
annotate标注⽂字
(1)annotate语法说明 :annotate(s='str' ,xy=(x,y) ,xytext=(l1,l2) ,..)
s 为注释⽂本内容
xy 为被注释的坐标点
xytext 为注释⽂字的坐标位置
xycoords 参数如下:
figure points points from the lower left of the figure 点在图左下⽅
figure pixels pixels from the lower left of the figure 图左下⾓的像素
figure fraction fraction of figure from lower left 左下⾓数字部分
axes points points from lower left corner of axes 从左下⾓点的坐标
axes pixels pixels from lower left corner of axes 从左下⾓的像素坐标
axes fraction fraction of axes from lower left 左下⾓轴的部分
data use the coordinate system of the object being annotated(default) 使⽤的坐标系统被注释的对象(默认)polar(theta,r) if not native ‘data’ coordinates
textcoords 设置注释⽂字偏移量
参数坐标系
'figure points'距离图形左下⾓的点数量
'figure pixels'距离图形左下⾓的像素数量
'figure fraction'0,0 是图形左下⾓,1,1 是右上⾓
'axes points'距离轴域左下⾓的点数量
'axes pixels'距离轴域左下⾓的像素数量
'axes fraction'0,0 是轴域左下⾓,1,1 是右上⾓
'data'使⽤轴域数据坐标系
arrowprops #箭头参数,参数类型为字典dict
width the width of the arrow in points 箭头的宽度
headwidth the width of the base of the arrow head in points 箭头顶点的宽度
fontweight属性bold
headlength the length of the arrow head in points 箭头的长度
shrink fraction of total length to ‘shrink’ from both ends 从两端收缩到总长度的部分
facecolor 箭头颜⾊
bbox给标题增加外框 ,常⽤参数如下:
boxstyle⽅框外形
facecolor(简写fc)背景颜⾊
edgecolor(简写ec)边框线条颜⾊
edgewidth边框线条⼤⼩
bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='k',lw=1 ,alpha=0.5) #fc为facecolor,ec为edgecolor,lw为lineweight
在数据可视化的过程中,图⽚中的⽂字经常被⽤来注释图中的⼀些特征。使⽤annotate()⽅法可以很⽅便地添加此类注释。在使⽤annotate时,要考虑两个点的坐标:被注释的地⽅xy(x, y)和插⼊⽂本的地
⽅xytext(x, y)。
plt.legend()添加图例
matplotlib.legend.DraggableLegend(legend, use_blit=False, update='loc')
位置的可选参数有:
设置axes脊柱(坐标系)
(1)去掉脊柱(坐标系)
ax.spines['top'].set_visible(False) #去掉上边框
ax.spines['bottom'].set_visible(False) #去掉下边框
ax.spines['left'].set_visible(False) #去掉左边框
ax.spines['right'].set_visible(False) #去掉右边框
(2)移动脊柱
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
(3)设置边框线颜⾊
ax = a() # 获取当前的axes
ax.spines['right'].set_color('blue')ax.spines['top'].set_color('none')
(4)设置边框线宽ax1.spines['left'].set_linewidth(5)
(5)设置边框线型ax.spines['left'].set_linestyle('--')
实验环境
Linux Ubuntu 16.04
Python 3.6.1
PyCharm
实验内容
使⽤matplotlib.pyplot中的title()函数设置图像标题。
使⽤matplotlib.pyplot中的annotate()函数标注⽂字。
使⽤matplotlib.pyplot中的text()函数设置⽂字说明。
使⽤matplotlib.pyplot中的legend()函数和plot中的label参数⼀起作⽤添加图例 。
使⽤matplotlib.pyplot中的axis()函数指定坐标范围。
使⽤matplotlib.pyplot中的grid()函数添加⽹格。
使⽤matplotlib.pyplot中的spines()函数移动脊柱
内容
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [3, 6, 7, 9, 2]
fig, ax = plt.subplots(1, 1)
ax.plot(x, y, label='trend')
ax.set_title('title test', fontsize=12, color='r', bbox={
'facecolor': 'red', 'alpha': 0.5, 'pad': 10})
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 6)
y = x * x
plt.plot(x, y, marker='o')
for xy in zip(x, y):
plt.annotate("(%s,%s)" % xy, xy=xy, xytext=(-20, 10),
textcoords='offset points')
plt.show()
import matplotlib.pyplot as plt
fig = plt.figure()
plt.axis([0, 10, 0, 10]) # 设置x,y轴坐标范围都为0到10
t = "This is a really long string that I'd rather have wrapped so that it doesn't go outside of the figure, but if it's long enough it will go off the top or bottom!"
# ha为⽔平对齐⽅式,rotation为逆时针旋转⾓度,wrap:是否在图中显⽰⽂字说明
<(4, 1, t, ha='left', rotation=15, wrap=True)
<(6, 5, t, ha='left', rotation=15, wrap=True)
<(5, 5, t, ha='right', rotation=-15, wrap=True)
<(5, 10, t, fontsize=18, style='oblique',
ha='center', va='top', wrap=True)
<(3, 4, t, family='serif', style='italic', ha='right', wrap=True)
<(-1, 0, t, ha='left', rotation=-15, wrap=True)
plt.show()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论