数据处理:matplotlib应用2--面向对象作图、图形参数设置

第一部分:颜色和样式

一.直接调整

1.颜色:

import numpy as np
import matplotlib.pyplot as plt

y=np.arange(1,5)
plt.plot(y,color='y')
plt.plot(y+1,color=(0,0,1))
plt.plot(y+2,color='#FF0000')
plt.plot(y+3,color='0.5')
plt.show()

1)直接用颜色英文或简写表示,如yellow<==>y;
2)用代表RGB(红绿蓝)比例的元祖表示,比例为0-1之间;
3)用代表RGB(红绿蓝)比例的#+十六进制表示,比例为00–FF之间;
4)用灰色阴影比例表示,0–1之间。
在这里插入图片描述
八种默认颜色及缩写:

b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white

2.线的样式:

'-'       直线
'--'      虚线
'-.'      -·-·
':'       点线

3.点的样式:

'.'       point marker
','       pixel marker
'o'       circle marker
'v'       triangle_down marker
'^'       triangle_up marker
'<'       triangle_left marker
'>'       triangle_right marker
'1'       tri_down marker
'2'       tri_up marker
'3'       tri_left marker
'4'       tri_right marker
's'       square marker
'p'       pentagon marker
'*'       star marker
'h'       hexagon1 marker
'H'       hexagon2 marker
'+'       plus marker
'x'       x marker
'D'       diamond marker
'd'       thin_diamond marker
'|'       vline marker
'_'       hline marker

4.样式字符串:可以将颜色、点型、线型写成一个字符串,如’ro–'表示红色O型的虚线

plt.plot(y,'y^:')

在这里插入图片描述

第二部分:面向对象与pyplot方式

面向对象(object-oriented)方式:接近matplotlib基础和底层的方式,定制能力强。
matplotlib对象:FigureCanvas、Figure、Axes

一.子图(subplot)

1.面向对象的方式:创建figure实例,再在其中创建若干axes实例

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)

fig = plt.figure()  #创建figure实例
ax1 = fig.add_subplot(221) #用figure下的add_subplot创建axes实例
ax1.plot(x,x)
ax2 = fig.add_subplot(222)
ax2.plot(x,-x)
ax3 = fig.add_subplot(223)
ax3.plot(x,x*x)
ax4 = fig.add_subplot(224)
ax4.plot(x,np.log(x))

plt.show()

ax1 = figure.add_subplot(abc)----创建子图实例,其中a–子图总行数,b–子图总列数,a–子图位置

2.matplotlib中pyplot方式:

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,100)

plt.subplot(221)
plt.plot(x,x)
plt.subplot(222)
plt.plot(x,-x)
plt.subplot(223)
plt.plot(x,x*x)
plt.subplot(224)
plt.plot(x,np.log(x))

plt.show()

在这里插入图片描述

二.多图(Figure)

面向对象的方式中,创建多个Figure,即为多张图:

import matplotlib.pyplot as plt

fig1=plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot([1,2,3,4],[4,3,2,1])

fig2=plt.figure()
ax2=fig2.add_subplot(111)
ax2.plot([1,2,3,4],[1,2,3,4])

plt.show()

在这里插入图片描述

第三部分:画图规范

一.网格(grid)

1.面向对象的方式:

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(x,y)

ax.grid(linestyle=':',linewidth=1,color='c')

plt.show()

2.pyplot方式:

import numpy as np
import matplotlib.pyplot as plt
y=np.arange(1,5)

plt.plot(y,y*2)
plt.grid(color='c',linestyle='-',linewidth='2')
plt.show()

linestyle–线型;linewidth–线宽;color–颜色。

在这里插入图片描述

二.图例(legend)

图例:将不同的图形对应的标签显示出来。
1.面向对象的方式:在ax.plot()时用label进行命名,然后用ax.legend()显示。
loc:位置,默认右上角,不同数字对应不同位置,0–自动选择最佳位置;
nloc:图例中的列数。

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure()
ax=fig.add_subplot(111)

ax.plot(x,y,label='Inline label')
ax.legend(loc=0,ncol=1)
plt.show()

在这里插入图片描述
2.pyplot方式:

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,11,1)
plt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')

plt.legend(loc=2,ncol=3)
plt.show()

在这里插入图片描述

三.坐标轴(grid)

1.坐标值范围(axis):
1)plt.axis()直接返回(xmin,xmax,ymin,ymax),可用列表进行调整;
1)plt.xlim()直接返回(xmin,xmax),可用列表或’xmin=a’的方式进行调整;
1)plt.ylim()直接返回(ymin,ymax),可用列表或’ymin=a’的方式进行调整。

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10,11,1)

plt.plot(x,x*x)
plt.axis([-5,5,0,60])
# plt.xlim(xmin=-5)
# plt.ylim([0,60])
plt.show()

2.坐标值刻度(gca):get current axis获取当前坐标轴
非日期的坐标轴刻度更改:导入matplotlib.pyplot中的MultipleLocator模块,用于设置刻度间隔,ax=plt.gca()获取坐标轴,然后ax.xaxis.set_major_locator更改间隔。

import matplotlib.pyplot as plt
#从pyplot导入MultipleLocator类,这个类用于设置刻度间隔
from matplotlib.pyplot import MultipleLocator
import numpy as np
x = np.arange(0,11,1)

x_major_locator=MultipleLocator(1)
plt.plot(x,x)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.show()

3.添加坐标轴(twin):
1)添加额外的y轴:.twinx()----共享x轴
2)添加额外的x轴:.twiny()----共享y轴

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,11,1)
fig = plt.figure()

ax1 = fig.add_subplot(111)
ax1.plot(x,x)
ax1.set_ylabel('Y1')

ax2 = ax1.twinx()
ax2.plot(x/2,2*x*x,color='r')
ax2.set_ylabel('Y2')

plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值