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()
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='--')
3. 设置图片风格
plt.plot(x,y_beijing,color='r',linestyle='--')
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属性
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()
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()
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()
柱状图
# 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()
其他图像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
数组内存块