【学习笔记】python数据可视化之matplotlib实践第九章

设置线条类型和标记类型的显示样式

(1)不同调用签名形式的字典使用方法

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

font = {'family':'monospace','color':'maroon','weight':'bold','size':16}

x = np.linspace(0.0,2*np.pi,500)
y = np.cos(x)*np.sin(x)

ax.plot(x,y,color = 'k',ls = '-',lw = 2)

ax.set_title('keyword mode ',fontdict = font)
ax.text(1.5,0.4,'cos(x)*sin(x)',fontdict = font)
ax.set_xlabel('time',**font)
ax.set_ylabel(r'$\Delta$height',**font)
ax.set_xlim(0,2*np.pi)
plt.show()

代码说明:1.我们将文本属性和属性值都放进字典font中,作为关键字参数fontdict的参数值传递到实例方法的调用签名中

2.在调用签名中,我们还使用了**font方法将字典变成关键字参数,使调用签名形式变得更加简洁。 fontdict = font和**font在调用签名时会获得等价的效果

3.font定义方法还可以是:font = dict(family = 'monospace',color = 'maroon',weight = 'bold',size = 16)

运行结果:

(2)线条类型的显示样式设置方法

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

font = {'family':'serif','color':'navy','weight':'black','size':16}
color = 'skyblue'
linewidth = 3
linestylelist = ['-','--','-.',':']

x = np.arange(1,11,1)
y = np.linspace(1,1,10)
ax.text(4,4,'line style',**font)

for i,ls in enumerate(linestylelist):
    ax.text(0,i+0.5,'"{}"'.format(ls),**font)
    ax.plot(x,(i+0.5)*y,linestyle = ls,color = color,linewidth = linewidth)
ax.set_xlim(-1,11)
ax.set_ylim(0,4.5)
ax.margins(0.2)
ax.set_xticks([])
ax.set_yticks([])
plt.show()

代码说明:我们对列表linestylelist中的线条样式元素进行了循环显示,每种线条样式的视图效果都有各自的特点

运行结果: 

(3)标记类型的显示样式设置方法

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']
mpl.rcParams['axes.unicode_minus'] = False

fig,ax = plt.subplots(2,2)
x = np.arange(1,13,1)
y = np.array([12,34,22,30,18,13,15,19,24,28,23,27])

ax[0,0].scatter(x,y*1.5,marker = r'$\clubsuit$',c = '#fb8072',s = 500)
ax[0,0].locator_params(axis = 'x',tight = True,nbins = 11)
ax[0,0].set_xlim(0,13)
ax[0,0].set_xticks(x)
ax[0,0].set_title('显示样式"%s"的散点图'%r'$\clubsuit$')

ax[0,1].scatter(x,y-2,marker = r'$\heartsuit$',c = '#fb8072',s = 500)
ax[0,1].locator_params(axis = 'x',tight = True,nbins = 11)
ax[0,1].set_xlim(0,13)
ax[0,1].set_xticks(x)
ax[0,1].set_title('显示样式"%s"的散点图'%r'$\heartsuit$')

ax[1,0].scatter(x,y+7,marker = r'$\diamondsuit$',c = '#fb8072',s = 500)
ax[1,0].locator_params(axis = 'x',tight = True,nbins = 11)
ax[1,0].set_xlim(0,13)
ax[1,0].set_xticks(x)
ax[1,0].set_title('显示样式"%s"的散点图'%r'$\diamondsuit$')

ax[1,1].scatter(x,y-9,marker = r'$\spadesuit$',c = '#fb8072',s = 500)
ax[1,1].locator_params(axis = 'x',tight = True,nbins = 11)
ax[1,1].set_xlim(0,13)
ax[1,1].set_xticks(x)
ax[1,1].set_title('显示样式"%s"的散点图'%r'$\spadesuit$')
plt.show()

代码说明:我们使用原始字符串作为标记类型,即关键字参数marker的取值是r'$\text$'模式的原始字符串

运行结果: 

(4)“破折号”线条样式的不同展现形式的设置方法

import matplotlib.pyplot as plt
import numpy as np

font_style = dict(family = 'serif',weight = 'black',size = 12)
line_marker_style1 = dict(linestyle = '--',linewidth = 2,color = 'maroon',markersize = 10)
line_marker_style2 = dict(linestyle = '--',linewidth = 2,color = 'cornflowerblue',markersize = 10)
line_marker_style3 = dict(linestyle = '--',linewidth = 2,color = 'turquoise',markersize = 10)

fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0,2*np.pi,500)
y = np.sin(x)*np.cos(x)

ax.plot(x,y,dashes = [10,2],label = 'dashes = [10,2]',**line_marker_style1)
ax.plot(x,y+0.2,dashes = [3,1],label = 'dashes = [3,1]',**line_marker_style2)
ax.plot(x,y+0.4,dashes = [2,2,8,2],label = 'dashes = [2,2,8,2]',**line_marker_style3)

ax.axis([0,2*np.pi,-0.7,1.2])
ax.legend(ncol = 3,bbox_to_anchor = (0,0.95,1,0.05),mode = 'expand',fancybox = True,shadow = True,prop = font_style)
plt.show()

代码说明:1.ax.plot(x,y,dashes = [10,2],label = 'dashes = [10,2]',**line_marker_style1) 里的dashes的取值含义:折线组成单元是由线段长度为10个数据点、线段之间间隔2个数据点的单元样式所组成

2.ax.plot(x,y+0.4,dashes = [2,2,8,2],label = 'dashes = [2,2,8,2]',**line_marker_style3)里的dashes的取值含义:折线组成单元是由2个数据点的线段、2个数据点的间隔、8个数据点的线段、2个数据点的间隔所组成的结构单元

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值