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() #展示这个图片

output_3_0

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



output_8_0

 #设定背景
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()

output_9_0

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

output_12_0

import numpy as np
#生成数据
plt.style.use('ggplot')

data1=np.random.rand(40).cumsum() #数据变的更好看

plt.plot(data1)
plt.show()

output_13_0

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


output_15_0

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

output_17_0

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进行一些图的绘制。
posted @ 2025-09-05 09:56  bokebanla  阅读(6)  评论(0)    收藏  举报