10.3 matplotlib模块
目录
10.3 matplotlib模块
- 思考:matplotlib模块有什么用?
界面、图形可视化,主要用来画图
10.3.1 条形图_plt.bar()
#以下几行默认写成这样
import matplotlib.pyplot as plt
#只识别英文,所以通过以下两行增加中文字体
from matplotlib.font_manager import FontProperties
#只在jupyter用jupyter默认不显示图片,通过这一行可以显示图片
%matplotlib inline
font=FontProperties(fname=r'D:\ATM\core\msyhl.ttc') #字体路径
#准备数据
classes=['class1','class2','class3','4班'] #columns班级
student_amounts=[30,20,30,40] #人数
classes_index=range(len(classes)) #索引代表什么意思
#画条形图
plt.bar(classes_index,student_amounts)
#对应 [0,1,2,3] [30,20,30,40]
#设置横轴坐标class1、
plt.xticks(classes_index,classes,fontproperties=font)
# 在条形上方加字
for ind,count in enumerate(student_amounts):
plt.text(ind,count,count) #参数(x轴位置,Y轴位置,需要添加的内容)
#设置x轴y轴坐标名称,和该直方图名称
plt.xlabel('班级',fontproperties=font) #乱码加入fontproperties=font
plt.ylabel('学生人数',fontproperties=font)
plt.title('班级-学生人数',fontproperties=font)
plt.show() #展示这个图片

10.3.2 直方图_plt.hist()
#randn默认正态分布
x=np.random.randn(10000)
print(x) #默认中间线是1
[ 0.9765183 1.54857844 -0.04081142 ... -0.63929413 0.46606572
0.87254 ]
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font=FontProperties(fname=r'D:\ATM\core\msyhl.ttc')
#生成数据
mu1,mu2,sigma=50,100,10
x1=mu1+sigma*np.random.randn(10000) #中间线是51,randn生成10000个服从正态分布的随机数
x2=mu2+sigma*np.random.randn(10000) #中间线是101
# plt.hist(x1,bins=100) #bins=100,是一万个数据分成一百份,对每份求平均值
# plt.hist(x2,bins=50)
# plt.show()

#设定背景
plt.style.use('ggplot')
#生成空白画布
fig=plt.figure()
#画布分成1行2列取第1个作为画布1
ax1=fig.add_subplot(121)
ax1.hist(x1,bins=100,color='pink') #参数很多
#加画布1标题
ax1.set_title('正态分布1',fontproperties=font)
#画布分成1行2列取第1个作为画布2
ax2=fig.add_subplot(122)
ax2.hist(x2,bins=100,color='blue')
ax2.set_title('正态分布2',fontproperties=font)
#大标题
fig.suptitle('直方图',fontproperties=font,fontsize=15,weight='bold')
plt.show()

10.3.3 折线图_plt.plot()
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font=FontProperties(fname=r'D:\ATM\core\msyhl.ttc')
import numpy as np
#生成数据
plt.style.use('ggplot')
data1=np.random.rand(40) #数据一直变化 可以在上方添随机种子np.random.sed(1)
plt.plot(data1)
plt.show()

import numpy as np
#生成数据
plt.style.use('ggplot')
data1=np.random.rand(40).cumsum() #数据变的更好看
plt.plot(data1)
plt.show()

arr=np.array([1,2,3,4])
arr.cumsum() #叠加,因此画出来的图呈现上升趋势
array([ 1, 3, 6, 10])
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font=FontProperties(fname=r'D:\ATM\core\msyhl.ttc')
#多个数据
import numpy as np
#生成数据
plt.style.use('ggplot')
data1=np.random.rand(40).cumsum() #数据一直变化 可以在上方添随机种子np.random.sed(1)
data2=np.random.rand(40).cumsum()
data3=np.random.rand(40).cumsum()
data4=np.random.rand(40).cumsum()
#linestyle线的样式 记不住就去百度搜索:pyplot的plot的linestyle
#alpha透明度,label定义折线名称
plt.plot(data1,color='r',linestyle='-',alpha=0.2,label='红色')
plt.plot(data2,color='green',linestyle='--',label='绿色')
plt.plot(data3,color='pink',linestyle=':',label='粉色')
plt.plot(data4,color='orange',linestyle='-.',label='橙色')
plt.legend(prop=font)
plt.show()

10.3.4 散点图_plt.scatter()
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font=FontProperties(fname=r'D:\ATM\core\msyhl.ttc')
x=np.arange(1,20)
y_linear=x**2
y_log=np.log(x)
fig=plt.figure()
# 画布分成3行1列取第1个作为画布1画散点图
ax1=fig.add_subplot(211)
plt.scatter(x,y_linear,color='red',marker='o',s=100) #marker控制散点形状,s控制大小
plt.scatter(x,y_log,color='blue',marker='*',s=30)
ax1.set_title('scatter')
# 画布分成3行1列取第3个作为画布2画折线图h
ax2=fig.add_subplot(313)
ax2.plot(x,y_linear)
ax2.plot(x,y_log)
ax2.set_title('plot')
plt.show()

10.3.5 文本_plt.text()
plt.text(0.5,0.5,'text')
plt.ylim(1,10)
plt.xlim(1,10) #修改x轴y轴取值范围
plt.show()
总结numpy/pandas/matplotlib之间的关系
- pandas读取表格数据,numpy对数据进行处理。二者结合做大数据分析,做数据预处理。
- 预处理:去除脏数据。
- 根据处理好的数据,matplotlib进行一些图的绘制。
浙公网安备 33010602011771号