目录
- 1.基本介绍
- 2.设置坐标轴
- 3.绘制图例
- 4.在图中添加注释
- 5.画散点图
- 6.画柱状图
1.基本介绍
import numpy as np
import matplotlib.pyplot as plt
np.linspace()用于生成等差数列
x= np.linspace(-3,3,50) #生成从-3到3共50个等差的数
y1 = 2*x+1
y2 = x**2
plt.figure()
plt.plot(x,y1) #线条的设置为默认值
plt.plot(x,y2,color='red',linewidth=2.0,linestyle='--')
plt.plot(x,y2,color=‘red’,linewidth=2.0,linestyle=’–’)可以在plot()里添加所画线条的描述:y2的颜色是红色,线宽为2.0,线条样式为’–’.
#设置坐标轴范围
plt.xlim((-1,2))
plt.ylim((-2,5))
#设置坐标轴标签
plt.xlabel('x')
plt.ylabel('y')
运行结果:
2.设置坐标轴
上述代码里已经对坐标轴设置了范围,并加了标签。基于上述代码,下面将对坐标轴做进一步的设置。
import numpy as np
import matplotlib.pyplot as plt
x= np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=2.0,linestyle='--')
plt.xlim((-1,2))
plt.xlabel('x')
plt.ylim((-2,5))
plt.ylabel('y')
重新设置坐标轴单位和精度:
new_x = np.linspace(-1,2,5) x轴的范围变成了(-1,2),中间共有5个标签:[-1 -0.25 -0.5 1.25 2]
new_x = np.linspace(-1,2,5) #生成等差数列
print(new_x) #[-1 -0.25 -0.5 1.25 2]
plt.xticks(new_x)
#给坐标轴上添加标签
plt.yticks([-2,1,3],[r'$wx$',r'$really\ bad$',r'$w\ \alpha$'])
上述代码表示在y轴的-2处加标签‘wx’…
’ $ … $ ':设置字体
空格的表示要加反斜杠’|‘
’|alpha’表示数学符号:α
#去掉图中的上、右边界线
ax= plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
gac = ‘get current axis’:获取目前的坐标轴
#改变坐标轴的方式
ax.xaxis.set_ticks_position('bottom') #用下面的坐标轴作为x轴
ax.spines['bottom'].set_position(('data',-1)) #横坐标的起始位置是Y轴的-2
ax.yaxis.set_ticks_position('left') #用下面的坐标轴作为y轴
ax.spines['left'].set_position(('data',0.5)) #纵坐标的起始位置是x轴的0.5
plt.show()
运行结果:
3.绘制图例
运行代码如下:
import numpy as np
import matplotlib.pyplot as plt
#绘制sin函数曲线
x = np.arange(-2, 6, 0.1)
y1 = np.sin(x)
y2 = 2*x+1
l1,= plt.plot(x, y1,color="g")
l2,= plt.plot(x, y2,color="b")
plt.xlim((-2,6))
plt.ylim((-2,5))
#省略有规则递增的x2参数
y3 = [-2,-1,-0.5,0, 0.5, 1.5, 2.4, 4.6, 8]
plt.plot(y3, color="r")
'''handles:操作的对象;labels:给对象加标签;loc:图例的位置(upper center/upper left) ;shadow:设置阴影'''
plt.legend(handles=[l1,l2,] ,labels = ['sin','ones'],loc='best',shadow = True)
plt.show()
运行结果:
4.在图中添加注释
运行代码如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3,3,50) #范围:-3到3,中间共有50个数
# x1 = np.arange(-3, 3, 0.1)#范围:-3到3,每隔0.1取一个数
y = 2*x+1
plt.figure(num=2,figsize=(7,5)) #num:图的序号;figsize:图的大小
plt.plot(x,y)
# plt.scatter(x,y)
ax= plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #用下面的坐标轴作为x轴
ax.spines['bottom'].set_position(('data',0)) #起始位置是Y轴的0
ax.yaxis.set_ticks_position('left') #用左边的坐标轴作为y轴
ax.spines['left'].set_position(('data',0)) #起始位置是x轴的0
x0 = 1
y0 = 2*x0+1
plt.scatter(x0,y0,s=50,color='b') #s:size
plt.plot([x0,x0],[y0,0],'k--',lw=2.5) #lw:longwide:线宽
#法一:
x0 = 1
y0 = 2*x0 + 1
plt.plot([x0,x0],[0,y0],'k--',linewidth = 2.5)
plt.scatter([x0,x0],[y0,y0],s = 50,color='b')
plt.annotate(r'$2x+1 = %s$'% y0,xy = (x0,y0),xycoords = 'data',
xytext=(+30,-30),textcoords = 'offset points',fontsize = 16
,arrowprops = dict(arrowstyle='->',
connectionstyle="arc3,rad=.2"))
#法二 在坐标轴(-3.7,4)为起始点
plt.text(-3.7,4,r'$This\ is\ the\ classion\ of\ coal\ gangue$',
fontdict={'size':16,'color':'r'})
plt.show()
运行结果如下:
5.画散点图
import numpy as np
import matplotlib.pyplot as plt
n=1024 #在x y轴分别生成1024个数
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n) #生成u=0,方差为1024个数的正太分布
T = np.arctan2(Y,X) #定义颜色
#生成散点图
plt.scatter(X,Y,s=75,c=T,alpha=0.5)
#设置坐标轴的范围
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
#隐藏坐标轴旁的标识
plt.xticks(())
plt.yticks(())
plt.show()
运行结果如下:
6.画柱状图
运作代码如下:
import numpy as np
import matplotlib.pyplot as plt
n=1024 #在x y轴分别生成1024个数
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n) #生成u=0,方差为1024个数的正太分布
T = np.arctan2(Y,X) #定义颜色
#生成散点图
plt.scatter(X,Y,s=75,c=T,alpha=0.5)
#设置坐标轴的范围
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
#隐藏坐标轴旁的标识
plt.xticks(())
plt.yticks(())
plt.show()
运行结果如下:
本文章参考B站上的视频《莫烦Python》
(by dzx 2020 03 27 16:37)