大数据挖掘-python基本绘图函数学习

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()

 

运行结果

总结:1、 字体可以使用自己下载的 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)
 
好文要顶 关注我 收藏该文  
posted @ 2023-02-27 11:19  Mint-L  阅读(234)  评论(0)    收藏  举报