1-plot绘制线型图
plot是python中最基本的绘制二维线性折线图的函数
基本使用方式:plt.plot(x,y,s)
代码实现:
import matplotlib.pyplot as plt import numpy as np import pandas as pd plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #plt.plot(x,y,s) 画出红色的正弦函数图 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,2*np.pi,50) #绘制出50个横坐标 (0,2Π) y = np.sin(x) plt.title('3126-mint') plt.plot(x,y,'r+') plt.show()
2-pie函数绘制饼图
饼图能够展示出各个部分的比例,能够非常只管的感受出每个部分的占比
代码实现:
import matplotlib.pyplot as plt labels = ['口语','听力','阅读','写作'] sizes = [15,30,35,20] #每一块的比例 colors =['green','gold','blue','lightcoral'] #每一块的颜色 explode = (0.2,0.1,0,0) #突出显示 plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=90) plt.axis('equal') #显示为圆,避免压缩成椭圆 plt.title('3126-mint') plt.show()
这里以一个学生的雅思成绩为例子,可以看到,听力和阅读是学生的主要得分点,而口语和写作的得分相对差一些,还可以观察到口语的的部分更加突出(离圆心更远),这是因为口语是最能够
提高分数的一门。
3-hist函数绘制二位条形直方图
代码实现:
# x = np.random.randn(1000) #随机生成1000个服从正态分布的随机数 # plt.hist(x,10) # plt.title('3126-mint') # plt.show() # # import pandas as pd # data = pd.read_excel("catering_sale.xls",index_col='日期') #读取数据,置顶日期为索引列 # data = data['销量'] # plt.hist(data,10) # plt.title('3126-mint') # plt.show()
运行结果
4-boxplot绘制箱型图
箱型图可以很明显的看出异常值,异常值都被清晰的标志出来
实现代码1
#绘制箱型图 x = np.random.randn(1000) D= pd.DataFrame([x,x+1]).T #构造两列的DataFrame D.plot(kind='box') #Series内置绘图方法,指定参数为box plt.title('3126-mint') #用annotate添加注释 plt.show()
运行结果
可以看出小黑点就是离群点
这里再用一个本书上的例子来画一个箱型图
import pandas as pd import numpy as np data = pd.read_excel("F:\2022年国赛建模培训\培训任务1\catering_sale.xls",index_col='日期') #读取数据,置顶日期为索引列 print(data.describe()) #餐饮日销售额异常值检测 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.figure() #建立图像 p = data.boxplot(return_type='dict') x = p['fliers'][0].get_xdata() #fliers即为异常值的标签 y = p['fliers'][0].get_ydata() y.sort() #用annotate添加注释 for i in range(len(x)): if i>0: plt.annotate(y[i],xy = (x[i],y[i]),xytext = (x[i]+0.05 - 0.8/(y[i]-y[i-1]),y[i])) else: plt.annotate(y[i],xy = (x[i],y[i]),xytext=(x[i]+0.08,y[i])) plt.show()
运行结果
直方图可以很好的观察数据的分布特征,这里用python的np.random.randn(1000)绘制了一千个服从正态度分布的数,为了更为明显我运行了三次,直方图都是服从正态分布的
5-plot(logx=True)/plot(logy=True) 绘制对数图
代码实现
import matplotlib.pyplot as plt import numpy as np import pandas as pd plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = pd.Series(np.exp(np.arange(20))) plt.figure(figsize=(8,9)) ax1 = plt.subplot(2,1,1) x.plot(label='原始数据图',legend=True) ax1 = plt.subplot(2,1,2) x.plot(logy=True,label='对数数据图',legend=True) plt.title('3126-mint') plt.show()
运行结果
![](/i/l/?n=23&i=blog/2531697/202302/2531697-20230227111638322-308649427.png)
zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
也可以使用系统的 plt.rcParams['font.family']='SimHei'
2、 三要素,标题:
plt.title
x座标 plt.xlabel
y坐标 plt.ylabel
3、 绘制子图使用
plt.subplot
4、 绘制数据标签:
plt.text
5、 图形显示
plt.show()
6、 最后没说的
plt.savefig('路径/名称.png')
7、 想让x坐标的文字倾斜45度:
plt.xticks(rotation=45)
好文要顶 关注我 收藏该文 ![](https://common.cnblogs.com/images/icon_weibo_24.png)
![](https://common.cnblogs.com/images/wechat.png)