import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi']#设置中文字体
plt.rcParams['axes.unicode_minus'] = False #取负数
#只含单一曲线
n = np.arange(10)
plt.plot(n)
#包含多个曲线
x = np.linspace(-1,1,100)
y = 1-x**2
plt.plot(x,y)
plt.plot(x,2*x+1)
plt.show() #显示绘制图,在show之前会画到一张图上
x = np.linspace(-10,10,100)
y = np.cos(x)
plt.plot(x,y)
plt.grid(c='g',alpha=0.5)#加网格
#添加网格线
plt.grid(True,lw=2,ls='--',c='red')#线宽、线风格、颜色
#画子图
x = np.linspace(-10,10,200)
y = np.cos(x)
fig = plt.figure(figsize=(10,6)) #画布大小(长,宽)
ax1 = fig.add_subplot(2,2,1) #前两个参数相乘说明共画子图数量,后面一个是画在哪个位置
ax1.plot(x,y)
ax2 = fig.add_subplot(2,2,2)
ax2.plot(x,2*y,c='red')#可以通过元组(R,G,B)设置颜色,还可以通过16进制设置颜色
ax3 = fig.add_subplot(2,2,3)
ax3.plot(x,4*y,c='g')
ax4 = fig.add_subplot(2,2,4)
ax4.plot(x,6*y,c='black')
#坐标轴
x = np.linspace(-10,10,200)
y = np.cos(x)
plt.plot(x,y)
plt.axis([-10,10,-1,1])#表示x轴在-10到10,y轴在-1到1
plt.plot(x,y)
plt.axis('off')#表示取消坐标轴
plt.plot(x,y)
plt.axis('equal')#x轴与y轴长度一样,刻度可以不一样
plt.plot(x,y)
plt.axis('scaled')#会自动缩放,去掉空白部分
#xlim,ylim控制x轴,y轴的范围
x = np.random.rand(100)
y = 2*x-1
plt.plot(x,y)
plt.xlim(0,1)
plt.ylim(-1,1)
#坐标轴标签xlabel,ylabel
x = np.random.rand(100)
y = 2*x-1
plt.plot(x,y)
plt.xlabel('X',fontsize=20,rotation=45)#字体大小,旋转角度
lp = plt.ylabel('Y',fontsize=20)
lp.set_position((0,0.8)) #设置标签对象,使用set_position方法。将标签位置移动
#标题title
x = np.random.rand(100)
y = 2*x-1
plt.plot(x,y)
plt.title('y=2*x-1',fontsize=20,bbox={'facecolor':'green'})#可通过bbox对标题样式设置
plt.plot(x,y)
plt.plot(x,2*y)
plt.plot(x,3*y-1)
plt.legend(['斜率为1','斜率为2','斜率为3'],loc=2,ncol=3)
#通过loc进行图例位置设置,共有1-10个位置,ncol设置一行有几个图例
#marker标记
x1 = np.random.normal(loc=0,scale=5,size=60)*10
x2 = np.random.normal(loc=20,scale=5,size=60)*10
x3 = np.random.normal(loc=40,scale=5,size=60)*10
plt.figure(figsize=(10,6))
plt.plot(x1,label='line1',ls='--',marker='o')
plt.plot(x2,label='line2',ls=':',marker='>')
plt.plot(x3,label='line3',ls='-.',marker='<')
plt.legend()
plt.savefig('a.png',dpi=200,facecolor='pink')#保存图片.dpi设置像素,背景颜色
#dashes自定义虚线
x = np.arange(-5,5)
y = (2*x)**2
plt.plot(x,y,dashes=[2,1,2,1],lw=2,marker='o',markeredgecolor='r')
#markeredgcolor点边缘颜色、markeredgwidth点边缘宽度,markerfacecolor点内部颜色
#markersize点大小
#step阶梯型
plt.step(x,y,ls='--')
#x,y轴坐标刻度
plt.plot(x,y)
plt.xticks([-4,0,4])
plt.yticks([0,50,100])