说起绘图,你可能会想到:
手绘图?-- os: 大脑:“我会了“ 手:”不, 你不会“
excel绘图?–os :画出的图好像跟我想的不一样
小编强烈推荐:
用Python来画图!
瞧好啦,看python如何让你眼前一亮
怎么导?
在命令行中输入
pip install matplotlib -i https://pypi.doubanio.com/simple //-i后面试镜像,用于加快下载速度
怎么用?
import matplotlib.pyplot as plt
是什么?
matplotlib:matplotlib 是 Python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中
---------------------------------------------------------------------------------------------------------------我是分割线-------
pyplot:Matplotlib 软件包中子包,提供了一个类似MATLAB的绘图框架,支持 Python 语言
--------------------------------------------------------------------------------------------------------------我是分割线--------
plt:一个别名,在编程过程中来替代matplotlib.pyplot,当然这个别名是随自己修改的,单一般使用plt,方便别人看懂自己的代码
import matplotlib.pyplot as plt
import numpy as np
# %matplotlib inline #图像不显示则导入
# plt show 展示
# plt cla 清除当前的子图axes
# plt clf 清除当前的画布figure
# plt.gcf 取出之前的画布
# fig 可以用于设置画布大小
易于显示数据变化趋势,可以直观地反映这种变化以及各组之间的差别
# 绘制一条直线
x = np.linspace(0,10,5) #设置x轴的值
y = (x+2)/2 #设置y轴的值
plt.plot(x,y) #使用plot画出来
# 绘制多条直线
plt.plot(x,y,x+1,y+1)
# 设定坐标系的大小比例
plt.figure(figsize=(2,4)) #2,4表示图的长宽,单位为英尺,所以我们看起来好像不太成正比
plt.plot(x,y)
# 线段的样式,样式比较多,这里只是一个小例子,实现了我们的图片个性化
plt.plot(x,x+2,'r--o') # r 为红色,--为线段样式,o为标记字符
# 设置图例legend() ;加入标识xlabel(),ylabel(),title()
a = np.linspace(-np.pi,np.pi,num=5) # np.pi是一个常数表示圆周率π,
b = 1-a**2
plt.plot(a,b,label='ab')
plt.plot(x,y,label='xy') #x和y是上一张图里面的值
plt.legend() #图例:区别不同的线
plt.xlabel('temp') #x轴标识
plt.ylabel('dist') #y轴标识
plt.title('tempdist') #标题
# 保存图像
# 1.实例化fig
fig = plt.figure(facecolor='snow')
# 2.画图
a = np.linspace(-np.pi,np.pi,num=5)
b = 1-a**2
plt.plot(a,b,label='ab')
plt.plot(x,y,label='xy') #x和y是上一张图里面的值
plt.legend() #图例:区别不同的线
plt.xlabel('temp') #x轴标识
plt.ylabel('dist') #y轴标识
plt.title('tempdist') #标题
# 3.保存
fig.savefig('./xy.png',dpi=100) #dpi像素大小
利用柱子的高度,反映数据的差异,肉眼对高度差异很敏感
x = ['崩','哒','拉','妲']
y = [4,4,7,9]
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置中文的样式,这样轴对应的字段才能显示中文
plt.grid(color='g',linestyle='--',alpha=0.2) # 设置网格线和透明度
plt.bar(x,y)
plt.barh(x,y) #使用这个方法把图的x和y轴置换
整理计量值的观测数据,分析其分布状态的统计方法,用于对总体的分布特征进行推断
x = [1,2,2,3,3,3,4]
# bins为柱子的个数 (1-1.3)为1,(1.3-1.6)为0
plt.hist(x,bins=10)
(array([1., 0., 0., 2., 0., 0., 3., 0., 0., 1.]),
array([1. , 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4. ]),
)
# normed 归一化处理(第一个array为0到1)
plt.hist(x,normed=True)
(array([0.47619048, 0. , 0. , 0.95238095, 0. ,
0. , 1.42857143, 0. , 0. , 0.47619048]),
array([1. , 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4. ]),
)
主要用于总体中各组成部分所占比重的研究
# 最简单的饼图
arr = [11,12,43,51]
plt.pie(arr)
# 不完整的饼图
arr1 = [0.3,0.2,0.1]
plt.pie(arr1)
# 标识 labeldistance labels为距离圆心的位置;autopct为占比;shadow为阴影;explodew为饼距离圆心的位置
arr2 = [1,3,4,7]
plt.pie(arr2,labels=['a','b','c','d'],labeldistance=1.2,autopct='%.2f%%',shadow=True,explode=[0.1,0.1,0.1,0.1])
这样就比较可视化,占比和类别都特别清楚
让我们发现变量之间隐藏的关系为我们决策作出重要的引导作用
x = np.linspace(-np.pi,np.pi,10)
y = x**2
plt.rcParams['axes.unicode_minus']=False #用来显示负号
plt.scatter(x,y)
x = np.random.random(20)
y = np.random.random(20)
plt.scatter(x,y)
同一数轴上,几批数据的箱形图并行排列,几批数据的中位数、尾长、异常值、分布区间等形状信息一看便知,在观察异常值方面,分析数据的时候比较适合
x = np.random.normal(size=1000)
plt.boxplot(x)
plt.show()
到这里,基本的图形已经介绍完了,当然这些只是最最简单和常见的图例,我们已经可以看到,一段很少的代码就可以定制自己的图,使这个图拥有个人的色彩
大家喜欢小编的文章记得多多点赞呀!!
小编能力有限,如果这篇文章有错误还烦请大家指出,一起进步,一起成长!!
最后附上小编的Pandas和Numpy的学习链接
Pandas:https://blog.csdn.net/weixin_45127640/article/details/107217307
Numpy:
https://blog.csdn.net/weixin_45127640/article/details/106696613