机器学习基础
- matplotlin折线图的三步实现,用于开发2d图像
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
x=range(60);
y=[random.uniform(10,15)for i in x]
plt.figure(figsize=(20,8),dpi=100);
plt.plot(x,y);
# 添加x,y轴的刻度,format()函数是用来讲字符是拼接作用
x_ticks_labels=["11点{}".format(i) for i in x]
y_ticks=range(40)
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_labels[::5]);# 必须开始的时候是要用数字开始
# 网格的添加
plt.grid(True,linestyle="--",alpha=1)
# 绘制的图像的保存
plt.savefig("./data/test1.png")
plt.show()
知识总结:
1.创建画布 – plt.figure(figsize=(20,8))
2.绘制图像 – plt.plot(x, y)
3.图片的保存–plt.savefig()
4.显示图像 – plt.show(),在显示图像之后会自动的释放资源,保存图片需要在显示之前
5.显示x和y轴的刻度时候使用的函数是plt.xticks(),并且参数中是提前定义好的数据
6.中文无法正常显示的问题解决方法:
(1).修改配置文件
(2).在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
7.将绘制的图片中添加网格的语法格式:plt.grid(True,linestyle=“–”,alpha=1)
8.给X,Y和图像的正上方添加表格的描述信息的函数:
(1).plt.xlabel(“x轴的描述信息”);
(2).plt.ylabel(“y轴的描述信息”);
(3).plt.title(“图像的描述信息”,fontsize=20);
9.给绘制的图像增加上自己的备注,是在绘制图的时候添加上label属性就可以
最终的实现的代码如下
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
x=range(60);
y=[random.uniform(10,15)for i in x]
y_beijing=[random.uniform(1,3) for i in x]
y_shanghai=[random.uniform(20,30) for i in x]
plt.figure(figsize=(20,8),dpi=100);
plt.plot(x,y,label='test county');
plt.plot(x,y_beijing,label='北京')
plt.plot(x,y_shanghai,color='r', label='上海',linestyle='--')
# 添加x,y轴的刻度
x_ticks_labels=["11点{}".format(i) for i in x]
y_ticks=range(40)
plt.yticks(y_ticks[::5])
plt.xticks(x[::5],x_ticks_labels[::5]);# 必须开始的时候是要用数字开始
# 网格的添加
plt.grid(True,linestyle="--",alpha=1)
# 添加描述的信息:
plt.xlabel("时间",fontsize=15)
plt.ylabel("温度",fontsize=15)
plt.title("某城市中午的时间变化表格",fontsize=20);
plt.legend(loc="best")
# 图片的保存的方法:
plt.savefig("./data/test1.png")
plt.show()
在一个画布中显示两个或者是两个以上的坐标轴应该怎么实现
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
x=range(60);
y=[random.uniform(10,15)for i in x]
y_beijing=[random.uniform(0,35) for i in x]
y_shanghai=[random.uniform(0,30) for i in x]
# 创建画布
fig,axes=plt.subplots (nrows=1,ncols=2,figsize=(20,8),dpi=100)
# 将数据分配到不同的图像之中
axes[0].plot(x,y_beijing,color='b',label='北京',linestyle='--')
axes[1].plot(x,y_shanghai,color='r', label='上海',linestyle='--')
# 添加x,y轴的刻度
y_ticks=range(40)
x_ticks_label=["11点{}分".format(i) for i in x]
# 添加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])
# 添加网格数据
axes[0].grid(True,linestyle="-",alpha=1)
axes[1].grid(True,linestyle="-",alpha=1)
axes[0].set_xlabel("时间",fontsize=18)
axes[0].set_ylabel("温度",fontsize=18)
axes[0].set_title("北京中午温度变化表格",fontsize=20);
axes[1].set_xlabel("时间",fontsize=18)
axes[1].set_ylabel("温度",fontsize=18)
axes[1].set_title("上海中午温度变化表格",fontsize=20);
# 显示图例,标注上面信息的作用
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.show()
- 折线图的应用场景(绘画出函数图像)
常见的图形的绘制
1.折线图:plt.plot(x, y)
2.散点图:plt.scatter(x, y)
3.柱状图:plt.bar(x, width, align=‘center’, **kwargs);
4.直方图:matplotlib.pyplot.hist(x, bins=None)
5.饼图:plt.pie(x, labels=,autopct=,colors)
柱状图的代码实现
# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
x=range(0,len(movie_name))
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
plt.figure(figsize=(20,8),dpi=100)
plt.bar(x,y,width=0.5, color=['b','r','g','y','c','m','y','k','c','g','b'])
plt.xticks(x,movie_name)
plt.xlabel("电影名称",fontsize=18,color='r')
plt.ylabel("票房数",fontsize=18,color='b')
plt.title("2021年票房柱状图",fontsize=23,color='r')
plt.show()