一、matplotlib
- matplotlib支持2D图形绘制,折线图、饼图、散点图、…
- matplotlib 也支持3D图形和动画,对于动画的支持不友好;
- 具有良好的系统兼容性(默认对中文不识别,各系统下修改方式不同)
- 可绘制高品质(设置清晰度)的图形
- 可以在python shell、Ipython shell,jupyter notebook、pycharm(需要添加plt.show()参数,返回前端内容)上运行
- 核心控制对象:标题、图例、XY轴标签、xy轴刻度、图形部分(具体所应用的图形)、图形的注释(关注点的提示),尺寸对象(图形大小的控制,也称画布)
1.简单配置绘图相关属性
默认配置:
import matplotlib.pyplot as plt # 画图模块
import matplotlib.style as style # 风格
import numpy as np
import scipy.stats as stats
# 配置图形
# 1.风格
style.use("ggplot")
#2.配置画布尺寸
plt.rcParams["figure.figsize"] = (10,6.18)
# 3.清晰度
plt.rcParams["figure.dpi"] = 100
# 4 .识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#5.当plt识别中文后,对于数字的负号就不识别了
plt.rcParams["axes.unicode_minus"] = False
2.matplotlib中绘图的三种模式
根据此默认配置可以完成静态图形的绘制,而对于交互类型的图像就需要使用到matplotlib自带的魔法方法
%matplotlib notebook
这样就可以在notebook中进行放大缩小等交互操练了。
在notebook中使用plt绘制的三种模式:
- %matplotlib inline:这是默认的模式,输出的图片是静态的
- %matplotlib auto:在这个模式下会弹出一个单独 的绘图窗口,和在pycharm中一样
- %matplotlib notebook:在这个模式下会在notebook中产生一个绘图窗口,能够对图片进行放大缩小等操作。
二、使用motplotlib进行简单绘图
1.绘制高斯分布曲线
import matplotlib.pyplot as plt # 画图模块
import matplotlib.style as style # 风格
import numpy as np
import scipy.stats as stats
# 配置图形
# 1.风格
#style.use("ggplot")
style.use("ggplot")
#2.配置画布尺寸
plt.rcParams["figure.figsize"] = (10,6.18)
# 3.清晰度
plt.rcParams["figure.dpi"] = 100
# 4 .识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#5.当plt识别中文后,对于数字的负号就不识别了
plt.rcParams["axes.unicode_minus"] = False
# 数据部分
x = np.linspace(-10,10,200)
y = stats.norm.pdf(x)/np.max(stats.norm.pdf(x)) #pdf概率密度函数
# 绘制线型图
plt.plot(x,y)
# 增加一条线
y1 = stats.norm.cdf(x) #cdf概率增长趋势
plt.plot(x,y1)
# 填充区域面积
plt.fill_between(x,y,alpha=3)
# 增加图例
plt.plot(x,y1,label = "CDF") #label图例信息
# 开启图例
plt.legend()
#plt。legend(labels = ['a','b']) # legend()中也可设置图例,优先级高于画线参数label
# 添加注释
plt.text(-2.5,0.6,s="PDF",rotation=70,color="red",alpha = .7,fontsize = 20)
# 轴标签设置
plt.xlabel("X轴",color = "green",fontsize=20,rotation=90)
# 刻度设置
plt.xticks(np.arange(-5,5))
#保存图片
#plt.savefig("./",dpi= 100) 100像素就足够了
2.结合Numpy绘制三角函数曲线
import matplotlib.pyplot as plt #画图模块
import matplotlib.style as style #风格
import numpy as np
import scipy.stats as stats
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
#inline 嵌入静态图
#配置图形
#1.风格配置
style.use("fivethirtyeight")
#2.配置画布的尺寸
plt.rcParams["figure.figsize"] = (12,6)
#3.清晰度
plt.rcParams["figure.dpi"] = 100
#4.设置识别中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
#rcParams['font.sans-serif'] = ['MicroSoft YaHei']
#5.当plt识别中文以后,对于数字的负号就不识别
plt.rcParams["axes.unicode_minus"] = False
x = np.linspace (-np.pi,np.pi,100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x,y1,label = "sin")
plt.plot(x,y2,label = "cos")
pi = np.pi
ticks = [-pi,-pi/2,0,pi/2,pi]
labels = ['$-\pi$','$-\pi/2$','zero','$\pi/2$','$\pi$']
# tickes 可以映射
# plt.xticks()可以设置x轴上刻度
plt.xticks(ticks,labels,color = "y",fontsize = 20,rotation = 45)
# plt.yticks()设置y轴上刻度
plt.yticks([-1,0,1],["min",'0',"max"])
plt.legend()