使用python进行绘图(一)
前言
这段时间,我一直在学习,如何使用python对于matlab的科学计算方面进行一个替代,作为计算机系学生,如果能用熟悉的语言在数学建模比赛中写代码,至少对于我来说,是一件很享受的事情。
今天学习的是关于python中使用matplotlib进行一个绘图
简单版:
#! conda env
# -*- coding:utf-8 -*-
# Time:2020/4/8 2:21 下午
# Author : nishizzma
# File : simply_sin_cos.py
import numpy as np
import matplotlib.pyplot as plt
#x为numpy数组,获得了一个从-pi到pi,间隔256个值
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s = np.cos(x),np.sin(x)
plt.plot(x,c)
plt.plot(x,s)
plt.show()
坐标轴设置:
#! conda env
# -*- coding:utf-8 -*-
# Time:2020/4/8 2:57 下午
# Author : nishizzma
# File : spines_use.py
import matplotlib.pyplot as plt
import numpy as np
ax = plt.gca()
"""
每一个坐标轴都有四条边,我们可以考虑将两条边设置为无色,然后将剩下两条边调整至
合适的位置
"""
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))
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s = np.cos(x),np.sin(x)
#label这里一定要设置,与下面的legend一一对应
plt.plot(x,c,color="blue",linewidth=1.0,linestyle="-",label="cox(x)")
plt.plot(x,s,color="green",linewidth=1.0,linestyle="-",label="sin(x)")
#设置标题的大小
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(10)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))
#设置图例
plt.legend(loc='upper left')
plt.show()
绘图基本操作:
#! conda env
# -*- coding:utf-8 -*-
# Time:2020/4/8 2:33 下午
# Author : nishizzma
# File : pictureSetting.py
import matplotlib.pyplot as plt
import numpy as np
#设置8*6点的图
plt.figure(figsize=(8,6),dpi=80)
#创建一个新的1*1的子图,接下来图会显示在第一块
plt.subplot(1,1,1)
#设置x与sin(x),cos(x)
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s = np.cos(x),np.sin(x)
#plot绘图
plt.plot(x,c,color="blue",linewidth=1.0,linestyle="-")
plt.plot(x,s,color="green",linewidth=1.0,linestyle="-")
#设置x轴上限
plt.xlim(-4.0,4.0)
#设置y轴上下限
plt.ylim(-1.0,1.0)
#设置x,y轴标注,这里可以指定特定位置的对应
plt.xticks(np.linspace(-4,4,9,endpoint=True))
plt.yticks(np.linspace(-1,1,5,endpoint=True))
plt.show()
"""
上面对于边界的设置,可以采取更加合适的计算
xmin,xmax=X.min(),X.max()
ymin,ymax=Y.min(),Y.max()
dx = (xmax - xmin) * 0.2
dy = (ymax - ymin) * 0.2
plt.xlim(xmin - dx,xmax + dx)
plt.ylim(ymin - dx,ymax + dx)
"""
二维图形填充:
#! conda env
# -*- coding:utf-8 -*-
# Time:2020/4/8 3:39 下午
# Author : nishizzma
# File : two_dPicture.py
import matplotlib.pyplot as plt
import numpy as np
n = 256
X = np.linspace(-np.pi,np.pi,n,endpoint=True)
Y = np.sin(2*X)
# plt.axes([0.025,0.025,0.95,0.95])
plt.plot (X, Y+1, color='blue', alpha=1.00)
plt.fill_between(X, 1, Y+1, color='blue', alpha=.25)
plt.plot (X, Y-1, color='blue', alpha=1.00)
plt.fill_between(X, -1, Y-1, (Y-1) > -1, color='blue', alpha=.25)
plt.fill_between(X, -1, Y-1, (Y-1) < -1, color='red', alpha=.25)
plt.xlim(-np.pi,np.pi), plt.xticks([])
plt.ylim(-2.5,2.5), plt.yticks([])
plt.show()