24.9.25 机器学习入门DAY4

110 阅读4分钟

1.在坐标系中绘制一幅折线图

import matplotlib.pyplot as plt
import random
from pylab import mpl
#设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
#设置正常显示符号
mpl.rcParams["axes.unicode_minus"]= False

# 0.准备数据
x= range(60)
y_shanghai=[random.uniform(15,18) for i in x]

#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.绘制图像
plt.plot(x,y_shanghai)

#2.1添加x,y轴刻度# 设置x,y轴刻度
x_ticks_label=["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
# plt.xticks(x_ticks label[::5]) #坐标刻度不可以直接通过字符串进行修改
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])

#2.2添加网格显示
plt.grid(True,linestyle="--",alpha=1)

#2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图",fontsize=20)

# 2.4 图像保存
plt.savefig("./test.png" )

#3.图像显示
plt.show()

image.png

2.在一个坐标系中绘制多个图像

在上述代码中加入

# 增加北京的温度数据
y_beijing =[random.uniform(1,3) for i in x]
# 绘制折线图
plt.plot(x,y_shanghai)
# 使用多次plot可以画多个折线
plt.plot(x,y_beijing,color='r',linestyle='--')

image.png

3. 设置图片风格

plt.plot(x,y_beijing,color='r',linestyle='--') image.png

4. 显示图例

plt.legend(loc="best")

# 绘制折线图
plt.plot(x,y_shanghai, label="上海”)
# 使用多次plot可以画多个折线
plt.plot(x,y_beijing,color='r',linestyle='--', label="北京")
# 显示图例
plt.legend(loc="best")

注意:使用plt.legend()函数需要plt.plot()中包含label属性 image.png

image.png

5. 创建一个带有多个axes(坐标系/绘图区)的图

matplotlib.pyplot.subplots(nrows=1,ncols=1,**fig_kw)

参数有:

Parameters :
nrows,ncols:设置有几行几列坐标系
int, optional, default:1,Number of rows/columns of the subplot grid.
Returns:
fig :图对象
axes:返回相应数量的坐标系
设置标题等方法不同:
set_xticks
set_yticks
set_xlabel
set_ylabel

代码实现:

import matplotlib.pyplot as plt
import random

# 0.准备数据
x= range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing =[random.uniform(1,3) for i in x]

#1.创建画布
plt.figure(figsize=(20,8),dpi=100)
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)

#2.绘制图像
axes[0].plot(x,y_shanghai,label = "上海")
axes[1].plot(x,y_beijing,color='b',linestyle='--',label = "北京")
# 显示图例
axes[0].legend(loc="best")
axes[1].legend(loc="best")
# 设置 x,y轴坐标
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])

# 2.2添加网格显示
axes[0].grid(True,linestyle="--",alpha=1)
axes[1].grid(True,linestyle="--",alpha=1)

#2.3 添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点-12点某城市温度变化图",fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点-12点某城市温度变化图",fontsize=20)
         
# 2.4 图像保存
plt.savefig("./test.png" )

#3.图像
plt.show()

image.png

numpy绘制数学图像

import numpy as np
# 0.准备数据
x=np.linspace(-10,10,1000)
y = np.sin(x)
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.绘制函数图像
plt.plot(x,y)# 2.1 添加网格显示
plt.grid()
# 3.显示图像
plt.show()

image.png

5. 绘制其他图形

散点图

# 0.准备数据
x=[225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147,953.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]
y=[196.63,203.88,210.75,372.74,202.41,247.61,24.9 ,239.34,49.64,191.74,33.1,140.32,104.15,176.84,288.23,128.79,30.74,400.02,205.35,330.64,283.45]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
#2.绘制图像
plt.scatter(x,y)
#3.图像显示
plt.show()

image.png

柱状图

# 0.准备数据
# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕']
# 横坐标
x= range(len(movie_name))
# 票房数据
y=[73853,57767,22354,15969,14839,8725,8716]
# 1.创建画布
plt.figure(figsize=(20,8),dpi=100)
# 2.绘制柱状图
plt.bar(x,y,width=0.5, color=['b','r','g','y','c','y','k'])
# 2.1b修改x轴的刻度显示
plt.xticks(x,movie_name)
# 2.2 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
# 2.3 添加标题
plt.title("电影票房收入对比")
# 3.显示图像
plt.show()

image.png

其他图像api

折线图:能够显示数据的变化趋势,反映事物的变化情况。(变化)

plt.plot()

散点图:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

plt.scatter()

柱状图:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)

plt.bar(x, width, align="center")

直方图:绘制连续性的数据展示一组或者多组数据的分布状况(统计)

plt.hist(x, bins)

饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类

plt.pie(x, labels, autopcf, colors)

6. numpy 学习

numpy:一个开源的Python科学计算库,计算器来要比python简洁高效,Numpy使用ndarray对象(生成numpy对象np.array())来处理多维数组。

Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。 NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

ndarray的优势:

1."list --分离式存储,存储内容多样化

2.ndarray——一体式存储,存储类型必须一样。

3.支持并行化运算

4.底层使用C写的,效率更高,释放GIL

数组内存块 image.png