1. Matplotlib简介
Matplotlib是Python的一个2D图形库,能够生成各种格式的图形(诸如折线图,散点图,直方图等等),界面可交互(可以利用鼠标对生成图形进行点击操作),
同时该2D图形库跨平台,即既可以在Python脚本中编码操作,也可以在Jupyter Notebook中使用,以及其他平台都可以很方便的使用Matplotlib图形库,而且生成图形质量较高,
甚至可以达到出版级别。需要注意的是,在相关Python软件中调用Matplotlib图形库时,需要利用shell进行单独安装,假如使用Jupyter Notebook时,相关图形库已直接配置在软件内,
不过其生成的图形无法进行交互,而是内嵌在Jupyter Notebook生成界面内。
绘制温度图--显示上海的温度变化图
import random import matplotlib.pyplot as plt # 添加这两行让中文字体正常显示 plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签 plt.rcParams['axes.unicode_minus']=False # 1.准备数据 x = range(60) y_shanghai = [random.uniform(15, 18) for i in x] # 2.创建画布 plt.figure(figsize=(20,8), dpi=80) # 绘制图像 plt.plot(x, y_shanghai) # 准备x轴的刻度说明 x_label = ['11点{}分'.format(i) for i in x] plt.xticks(x[::5],x_label[::5]) plt.yticks(range(0,40,5)) # 添加网格 plt.grid(linestyle="--",alpha=0.5) # 添加描述信息 plt.xlabel('时间变化') plt.ylabel('温度变化') plt.title('上海11-12点每分钟的温度变化图') # 显示图 plt.show()
同时显示两个城市的温度变化图
import random import matplotlib.pyplot as plt # 添加这两行让中文字体正常显示 plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签 plt.rcParams['axes.unicode_minus']=False # 1.准备数据 x = range(60) y_shanghai = [random.uniform(15, 18) for i in x] y_beijing = [random.uniform(1, 3) for i in x] # 2.创建画布 plt.figure(figsize=(20,8), dpi=80) # 绘制图像 plt.plot(x, y_shanghai) plt.plot(x, y_beijing) # 准备x轴的刻度说明 x_label = ['11点{}分'.format(i) for i in x] plt.xticks(x[::5],x_label[::5]) plt.yticks(range(0,40,5)) # 添加网格 plt.grid(linestyle="--",alpha=0.5) # 添加描述信息 plt.xlabel('时间变化') plt.ylabel('温度变化') plt.title('上海、北京11-12点每分钟的温度变化图') # 显示图 plt.show()
设置图形风格 颜色: r(红) g(绿) b(蓝) w(白) c(青) m(洋红) y(黄) k(黑)
风格字符:
- 实线 -- 虚线 -. 点划线 : 点虚线 '' 留空 空格
注意:如果只在plt.plot()中设置label还不能显示出图例,还需要通过plt.legend()将图例显示出来 plt.legend(loc="best")
Location String Location Code 'best' 0 'upper right' 1 'upper left' 2 'lower left' 3 'lower right' 4 'right' 5 'center' 6
散点图的绘制
import matplotlib.pyplot as plt # 准备数据 x = [1, 3, 6, 6, 7, 9, 5] y = [2, 3, 5, 6, 8, 2, 3] # 绘制画布 plt.figure(figsize=(20,8),dpi=80) # 绘制散点图 plt.scatter(x, y) # 显示图像 plt.show()
绘制柱状图--显示每部电影的票房
import matplotlib.pyplot as plt # 1.准备数据 movie_name = ['雷神','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔记','追捕'] tickets = [73853, 57767, 22354, 15969, 14839, 8725, 8318] # 2. 创建画布 plt.figure(figsize=(20, 8),dpi=80) # 3.绘制柱状图 x_ticks = range(len(movie_name)) plt.bar(x_ticks, tickets, color=['b','r','g','y','c','m','y']) # 修改x刻度 plt.xticks(x_ticks, movie_name) # 添加标题 plt.title('电影票房收入对比') # 显示网格 plt.grid(linestyle='--',alpha=0.5) # 4.显示图像 plt.show()