快速上手Matplotlib
快速入门
运行这段代码
import matplotlib.pyplot as plt # 这里是导入相关的包 %matplotlib inline plt.figure() # 这里创建画图对象 plt.plot([1, 0, 9], [4, 5, 6]) # 第一个参数x的坐标集合,第二个参数是y轴的坐标列表 plt.show() # 显示图片
运行结果
保存结果
figsize是设置这个图像的大小,也就是宽高,然后dpi是设置清晰度。
savefig是保存图片,设置位置。
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline # 1.创建画布 plt.figure(figsize=(20, 8), dpi=80) # 2.绘制图像 plt.plot([1, 2, 3, 4, 5, 6, 7], [17, 17, 18, 15, 11, 11, 13]) # 3.显示图像 plt.show() # 4.保存图像 plt.savefig("test.png")
运行结果如下
修改x,y轴
首先是准备数据
这个uniform(l,r)是创建这个[l,r]不同的数字
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y x = range(60) y_wuhan = [random.uniform(15, 18) for i in x] for i in y_wuhan: print(i)
完整代码
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y x = range(60) y_wuhan = [random.uniform(15, 18) for i in x] # for i in y_wuhan: # print(i) # 1.创建画布 plt.figure(figsize=(20, 8), dpi=80) # 2.绘制图像 plt.plot(x, y_wuhan) # 3.显示图像 plt.show() # # 4.保存图像 # plt.savefig("test.png")
运行结果
分析这个例子,我们发现有一个问题,这个问题就是这个折现的斜率太大了,然后现在我们希望这个斜率变小一点。
- 设置x,y轴的值
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y x = range(60) y_wuhan = [random.uniform(15, 18) for i in x] # 1.创建画布 # 设置中文字体 plt.rc('font', family='SimHei', size=13) plt.figure(figsize=(20, 8), dpi=80) # 2.绘制图像 plt.plot(x, y_wuhan) # 增加以下两行代码 # 构造x轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x] # 构造y轴刻度 y_ticks = range(40) # 修改x,y轴坐标的刻度显示 plt.xticks(x[::5], x_ticks_label[::5]) # 这是设置x,y轴的间隔分别为5 plt.yticks(range(0, 40, 5)) # 3.显示图像 plt.show()
运行结果
添加其他信息
- 添加网格
语法如下
plt.grid(True,linestyle="--",alpha=0.5) - 添加标题与横纵标题
plt.xlabel("时间变化") plt.ylabel("温度变化") plt.title("某城市11点到12点每分钟的温度变化情况")
完整演示代码
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y x = range(60) y_wuhan = [random.uniform(15, 18) for i in x] # 1.创建画布 # 设置中文字体 plt.rc('font', family='SimHei', size=13) plt.figure(figsize=(20, 8), dpi=80) # 2.绘制图像 plt.plot(x, y_wuhan) # 增加以下两行代码 # 构造x轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x] # 构造y轴刻度 y_ticks = range(40) # 修改x,y轴坐标的刻度显示 plt.xticks(x[::5], x_ticks_label[::5]) # 这是设置x,y轴的间隔分别为5 plt.yticks(range(0, 40, 5)) # 添加网格线 plt.grid(True,linestyle="--",alpha=0.5) # 添加标题与横纵标题 plt.xlabel("时间变化") plt.ylabel("温度变化") plt.title("某城市11点到12点每分钟的温度变化情况") # 3.显示图像 plt.show()
运行结果
加上另一个图像
- 添加游标
完整代码
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y 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.rc('font', family='SimHei', size=13) plt.figure(figsize=(20, 8), dpi=80) # 2.绘制图像 plt.plot(x, y_shanghai, color="r", linestyle="--") plt.plot(x, y_beijing, color="b") # 增加以下两行代码 # 构造x轴刻度标签 x_ticks_label = ["11点{}分".format(i) for i in x] # 构造y轴刻度 y_ticks = range(40) # 修改x,y轴坐标的刻度显示 plt.xticks(x[::5], x_ticks_label[::5]) # 这是设置x,y轴的间隔分别为5 plt.yticks(range(0, 40, 5)) # 添加网格线 plt.grid(True,linestyle="--",alpha=0.5) # 添加标题与横纵标题 plt.xlabel("时间变化") plt.ylabel("温度变化") plt.title("上海、北京11点到12点每分钟的温度变化情况") # 3.显示图像 plt.show()
运行结果
创建多个绘图区
在同一个图里面添加,多个绘图区域,然后可以同时显示多个图像。
完整代码
# 展现某城市一周的天气,比如周一到周日的天气温度 import matplotlib.pyplot as plt %matplotlib inline import random # 0.准备数据x,y 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.rc('font', family='SimHei', size=13) figure, axes=plt.subplots(nrows=1,ncols=2,figsize=(30, 8), dpi=80) # 2.绘制图像 axes[0].plot(x, y_shanghai, color="r", linestyle="--", label="上海") axes[1].plot(x, y_beijing, color="b", label="北京") # 显示图例 axes[0].legend() axes[1].legend() # 修改x,y刻度 # 构造x轴刻度标签 x_label = ["11点{}分".format(i) for i in x] axes[0].set_xticks(x[::5],x_label[::5]) axes[0].set_yticks(range(0, 40, 5)) axes[1].set_xticks(x[::5],x_label[::5]) axes[1].set_yticks(range(0, 40, 5)) # 添加网格线 axes[0].grid(True,linestyle="--",alpha=0.5) axes[1].grid(True,linestyle="--",alpha=0.5) # 添加标题与横纵标题 axes[0].set_xlabel("时间变化") axes[0].set_ylabel("温度变化") axes[0].set_title("上海11点到12点的温度变化情况") axes[1].set_xlabel("时间变化") axes[1].set_ylabel("温度变化") axes[1].set_title("北京11点到12点的温度变化情况") # 3.显示图像 plt.show()
运行结果