Python学习:Matplotlib库(一)

一、matplotlib基础绘图

1. plt.plot([ ])

import matplotlib.pyplot as plt 
import numpy as np
plt.plot([-1, 2, 5, 10]) # 纵轴为参数,横轴为下标,从0开始

在这里插入图片描述

2. 图像参数设置

plt.plot([-1, 2, 5, 10],'ob'] # o表示以圈标记marker, b表示蓝色填充,默认为实线。

圈
图像标记与颜色设置
在这里插入图片描述
在这里插入图片描述

3. 设置x轴

day = np.arange(1,10,2)
cel = np.array([10,20,20,30,25])
plt.plot(day,cel,'bo')

在这里插入图片描述

4. 增加轴标签:plt.xlabel( )、plt.ylabel( )

days = list(range(0,22,3))
cel = [25,24,26,28,27,30,33,34]
plt.plot(days,cel,"m-")
plt.xlabel("Day")
plt.ylabel("Degrees Celsius")

在这里插入图片描述

5. 指定任意数量的x、y组

days = list(range(0,22,3))
cel_min = [25,24,26,28,27,30,33,34]
cel_max = np.random.randint(1,10,size=8)+cel_min
plt.plot(days,cel_min,
days,cel_min,"oc",
days,cel_max,
days,cel_max,"3k")

在这里插入图片描述

6. 检查并指定坐标轴范围

plt.plot(days,cel_min,days,cel_min,"oc",days,cel_max,days,cel_max,"3k")
print(plt.axis())
xmin, xmax, ymin, ymax = -1, 25, 20, 45
plt.axis([xmin, xmax, ymin, ymax])

在这里插入图片描述

7. 使用linspace定义x数值

x = np.linspace(0,2*np.pi, 50, endpoint = True)
F = np.sin(x)
plt.plot(x, F)
plt.axis([-0.1, 2*pi+0.1, -1.1, 1.1])

在这里插入图片描述

8. plt.fill_between():涂出阴影部分面积

x = np.linspace(-np.pi, np.pi, 1000, endpoint = True)
y1 = np.sin(2*x)
y2 = 2*np.sin(x)
plt.plot(x, y1, 'b', alpha = 1) # alpha:透明度
plt.plot(x, y2, 'r', alpha = 1)
plt.fill_between(x, y1, y2, color = 'y', alpha = 0.1) #(x,y1,y2)表示在x范围内,y1与y2围成的图形面积。

二、坐标轴设置

1. 坐标轴变化:ax = plt.gca()

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2*np.pi, 2*np.pi, 500)
F1 = np.sin(2*x)
F2 = np.exp(-x)

ax = plt.gca() # gca:get current axis
# 让顶轴与右轴不可见
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 横轴移动到y=0的位置
ax.spines['bottom'].set_position(('data',0))
# 纵轴移动到x=0的位置
ax.spines['left'].set_position(('data',0))
plt.plot(x,F1,x,F2)

在这里插入图片描述

2. 设置坐标轴:plt.xticks()

locs, labels = plt.xticks()
print(locs, labels)

# 使用xticks、yticks设置坐标轴
plt.xticks(np.arange(10))
locs, labels = plt.xticks()
print(locs, labels)

在这里插入图片描述

3. 同时设置x轴标签

plt.xticks(np.arange(4),('Berlin','London','Wuhan','Toronto'))

在这里插入图片描述

plt.xticks([-6.28,-3.14,3.14,6.28],[r'$-2\pi$',r'$-\pi$',r'$\pi$',r'$2\pi$'])

在这里插入图片描述

三、图例与图注释

1. 图例:

方法一:plt.legend()

x = np.linspace(0,10,1000)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1,label = 'sinx')
plt.plot(x,y2,label = 'cosx')
plt.legend(loc='best') #画线时的labele会自动加到图例
plt.ylim(-1.5,2.0) #y轴范围

在这里插入图片描述

方法二:ax = plt.gca() ax.legend([ ])

ax = plt.gca()
ax.plot([10,20])
ax.legend(['a simple line'])

在这里插入图片描述

2. 图注释

x = 3*np.pi/4
plt.scatter(x,3*np.sin(x),50,color = 'b')
plt.annotate(r'$(3\sin(\frac{3\pi}{4}),\frac{3}{\sqrt{2}})$',
xy = (x,3*np.sin(x)), #箭头顶端的坐标
xycoords = 'data',
xytext = (+20,+20), # 文本位置的坐标
textcoords = 'offset points',
fontsize = 16,
arrowprops = dict(facecolor = 'blue'))

在这里插入图片描述

四、多图绘制

1. plt.subplot(nrows, nnums, plot_num)

py_green = '#476042'
plt.figure(figsize=(6,4))

plt.subplot(221)
plt.text(0.5, 0.5, 'subplot(221)', horizontalalignment = 'center',
verticalalignment = 'center',
fontsize = 20,
alpha = 0.5)
plt.xticks(())
plt.yticks(())

plt.subplot(224, facecolor = py_green)
plt.text('subplot(224)',ha='center',va='center',fontsize = 20,color='y')

在这里插入图片描述

2. 使用面向对象的方法

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"] = ['LiSu']
mpl.rcParams["axes.unicode_minus"] = False
font_style = dict(fontsize = 18,weight = 'black')
x = np.linspace(0,2*np.pi,500)
y = np.sin(x)*np.exp(-x)
fig, ax  =  plt.subplots(1,2,sharey=True)
ax1 = ax[0]
ax1.plot(x,y,"k--",lw=2)
ax1.set_title('折线图')
ax1.grid(ls=':',lw=1,color='gray',alpha=0.8)
ax2 = ax[1]
ax2.scatter(x,y,s=10,c='skyblue',marker='o')
ax2.set_title('散点图')
plt.suptitle('一张画布,两个子图',**font_style)

在这里插入图片描述

3. 共享坐标轴

fig, ax1 = plt.subplots()
x = np.arange(1,7,0.1)
ax1.plot(x,2*np.pi*x,lw=2,color='b')
ax1.set_ylabel(r'Circumference$(cm)$',fontsize=16,color='blue')
for label in ax1.get_yticklabels():
    label.set_color('blue')

ax2 = ax1.twinx() #共享x轴
ax2.plot(x,np.pi*x**2,lw=2,color='darkgreen')
ax2.set_ylabel(r'area$(cm^2$',fontsize=16,color='darkgreen')
for label in ax2.get_yticklabels():
    label.set_color('darkgreen')

在这里插入图片描述

4. 保存图片

fig.savefig('figname.png')

五、直方图

gau_num = np.random.normal(size=10000)
plt.hist(gau_num)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值