python可视化学习_python数据可视化学习-3

第4章 学习更多图表和定制化

4.4 向图表添加数据表

当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。

列出数据集的总结性的或者突出强调的值。

importmatplotlib.pyplot as pltimportnumpy as np

plt.figure()

ax=plt.gca()

y= np.random.randn(9)

col_labels= ['c1', 'c2', 'c3']

row_labels= ['r1', 'r2', 'r3']

table_vals= [[11, 12, 13], [21, 22, 23], [31, 32, 33]]

row_colors= ['r', 'b', 'g']#创建一个带单元格的表格,并添加到当前坐标轴中

my_table = plt.table(cellText=table_vals,

colWidths=[0.1] * 3,

rowLabels=row_labels,

colLabels=col_labels,

rowColours=row_colors,

loc='upper right')

plt.plot(y)

plt.show()

4.5 使用subplots(子区)

subplot派生自axes,位于subplot实例的规则网格中。

matplotlib.pyplot.subplots用来创建普通布局的子区,可以用来创建子区的行数和列数,并可以使用关键字参数sharex和sharey来创建共享x或共享y的子区(sharex = True)。

matplotlib.pyplot.subplots方法返回一个(fig,ax)元组。其中ax可以是一个坐标轴实例,当多个子区时,ax是一个坐标轴实例的数组。

importmatplotlib.pyplot as plt

plt.figure(0)#向subplot2grid方法传入形状参数、位置参数loc和可选的colspan、rowspan参数#colspan和rowspan参数让子区跨越给定网格中的多个行和列#子图的分割规划,位置基于0,而不是像pyplot.subplot()那样基于1

a1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)

a2= plt.subplot2grid((3, 3), (1, 0), colspan=2)

a3= plt.subplot2grid((3, 3), (1, 2), colspan=1)

a4= plt.subplot2grid((3, 3), (2, 0), colspan=1)

a5= plt.subplot2grid((3, 3), (2, 1), colspan=2)#整理刻度标签的大小

all_axex =plt.gcf().axesfor ax inall_axex:for ticklabel in ax.get_xticklabels() +ax.get_yticklabels():

ticklabel.set_fontsize(9)

plt.suptitle("Demo")

plt.show()

也可以用标签参数方法设置字体大小和标签等:

#让标签显示在内部

a1.tick_params(direction='in')#设置刻度标签的大小

a1.tick_params(labelsize=10)#参数bottom, top, left, right的值为布尔值, 设置绘图区四个边框的刻度线是否显示

a1.tick_params(top=True,right=True)#参数labelbottom, labeltop, labelleft, labelright的值为布尔值,分别代表设置绘图区四个边框线上的刻度线标签是否显示

a1.tick_params(labeltop=True,labelright=True)

4.6 定制化网格

matplotlib.pyplot.grid函数

函数参数which可以是'major','minor'或'both',表示仅通过主刻度或者次刻度,或者同时通过两个刻度来操纵网格。

举例:

ax.grid(color='g', linestyle='--', linewidth=1)

4.7 创建等高线图

矩阵中数值相等的点连成的曲线。

contour()函数绘制等高线,contourf()函数绘制填充的等高线。

importmatplotlib.pyplot as pltimportnumpy as npimportmatplotlib as mpl#生成一些线性信号数据

defprocess_signals(x, y):return (1 - (x ** 2 + y ** 2)) * np.exp(-y ** 3 / 3)#numpy.arange([start, ]stop, [step, ]dtype=None)#和range函数类似,但返回值时一个数组而不是一个列表

x = np.arange(-1.5, 1.5, 0.1)

y= np.arange(-1.5, 1.5, 0.1)#np.meshgrid生成网格点坐标矩阵

X, Y =np.meshgrid(x, y)

Z=process_signals(X, Y)

N= np.arange(-1, 1.5, 0.3) #作为等值线的间隔#绘制等高线,水平数由N决定

CS = plt.contour(Z, N, linewidths=2, cmap=mpl.cm.jet)

plt.clabel(CS, inline=True, fmt='%1.1f', fontsize=10) #等值线标签

plt.colorbar(CS) # 添加颜色映射表plt.show()

4.8 填充图表底层区域

np.ma.masked_greater函数可以屏蔽数组中大于给定值的所有值,用来处理护理缺失或者无效的值。相似的函数:

#masked_array(元数据,条件)利用参数2的条件制作一个掩膜,去除背景值数据#im_data > 100时出现警告UserWarning: Warning: converting a masked element to nan.

im_data = np.ma.masked_array(im_data, im_data > int(100))

from matplotlib.pyplot import *

importnumpy as np

x= np.arange(0, 2, 0.01)#创建两个不同的信号

y1 = np.sin(2 * np.pi *x)

y2= 1.2 * np.sin(4 * np.pi *x)

fig=figure()#ax = gca()#绘图

axes1 = fig.add_subplot(211)

axes1.plot(x, y1, x, y2, color='b')#填充两条轮廓线中间的区域

axes1.fill_between(x, y1, y2, where=y2 > y1, facecolor='g', interpolate=True)

axes1.fill_between(x, y1, y2, where=y2 < y1, facecolor='darkblue', interpolate=True)

axes1.set_xlim(0,2)

axes1.set_title('filled between')

axes2= fig.add_subplot(212)#np.ma.masked_greater用来处理缺失或者无效的值

y2 = np.ma.masked_greater(y2, 1.0) #屏蔽y2中大于1.0的值的所有制

axes2.plot(x, y1, x, y2, color='black')

axes2.fill_between(x, y1, y2, where=y2 > y1, facecolor='g', interpolate=True)

axes2.fill_between(x, y1, y2, where=y2 < y1, facecolor='darkblue', interpolate=True)

show()

masked_greater()处理缺失或无效的值。

from matplotlib.pyplot import *

importnumpy as np

x= np.arange(0, 2, 0.01)#创建两个不同的信号

y1 = np.sin(2 * np.pi *x)

y2= 1.2 * np.sin(4 * np.pi *x)

fig=figure()#ax = gca()#绘图

axes1 = fig.add_subplot(211)

axes1.plot(x, y1, x, y2, color='b')#填充两条轮廓线中间的区域

axes1.fill_between(x, y1, y2, where=y2 > y1, facecolor='g', interpolate=True)

axes1.fill_between(x, y1, y2, where=y2 < y1, facecolor='darkblue', interpolate=True)

axes1.set_xlim(0,2)

axes1.set_title('filled between')

axes2= fig.add_subplot(212)#np.ma.masked_greater用来处理缺失或者无效的值

y2 = np.ma.masked_greater(y2, 1.0) #屏蔽y2中大于1.0的值的所有制

axes2.plot(x, y1, x, y2, color='black')

axes2.fill_between(x, y1, y2, where=y2 > y1, facecolor='g', interpolate=True)

axes2.fill_between(x, y1, y2, where=y2 < y1, facecolor='darkblue', interpolate=True)

yticks([-1, 0, +1]) #设置y轴刻度标签

show()

4.9 绘制极限图

通常用来表示本质上是射线的信息。

(暂时用不到啦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值