什么是matplotlib
最流行的python底层绘图库,主要做数据可视化图表,名字取自MATLAB,模仿MATLAB创建
matplot基本要点
axis轴:指的是x或者y这种坐标轴
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 20 13:12:17 2020
@author: X星云Nebularr
"""
# 导入了pyplot模块并进行重命名
from matplotlib import pyplot as plt
x = range(2, 26, 2) # 数据在x轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
# 数据在y轴的位置,是一个可迭代对象
plt.plot(x, y) #传入x和y,通过plot绘制出折线图
plt.show() #展示图形
运行结果:
需要完善的几个问题:
- 设置图片大小 :figure方法(设置dpi和figsize属性)
- x轴的刻度值:xticks方法(在plot方法前后都能使用;用列表生成式和切片可以得到想要的效果;字符串用等)
- 无法显示中文:https://www.jianshu.com/p/57b94a2c0985
- 双轴没有图形信息:xlabel和ylabel,title方法
- 绘制网格:grid(),alpha透明度系数
- 多表时添加图例:plot方法中设置label属性,并使用lengend方法。也可以用loc属性设置图例位置
- 添加文本注释
- 添加水印
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 20 13:12:17 2020
@author: X星云Nebularr
"""
import matplotlib as mpl
from matplotlib import pyplot as plt # 导入了pyplot模块并进行重命名、
# matplotlib默认不支持中文
mpl.rcParams['font.sans-serif'] = ['MicroSoft YaHei'] #设置简黑字体
mpl.rcParams['axes.unicode_minus'] = False # 解决‘-’bug
fig = plt.figure(figsize = (20, 10), dpi = 80) # figsize设置图像尺寸大小,dpi参数可以让图像发大不失真
x = range(2, 26, 2) # 数据在x轴的位置,是一个可迭代对象,对range()必须转换为列表再取步长
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15] # 数据在y轴的位置,是一个可迭代对象
y_1 = [16, 20, 15, 17, 20, 27, 26, 24, 24, 23, 14, 15]
_x = x
_xtick_list = ["时间.{}".format(i) for i in _x]
plt.xticks(_x, _xtick_list, rotation = 45) # 打印字符串需要一一对应
#plt.xticks([i/2 for i in range(4, 49)][::3]) # 设置x轴刻度值
plt.yticks(range(min(y), max(y)+1)) # 设置y
plt.xlabel("时间/s")
plt.ylabel("温度/℃")
plt.title("某市区的温度统计图")
plt.grid(alpha = 0.4)
plt.plot(x, y, label = "A城", color = "green") #传入x和y,通过plot绘制出折线图
plt.plot(x, y_1, label = "B城", color = "cyan", linestyle = "--", linewidth = 4)
plt.legend(loc = "upper left")
plt.savefig("./fig.svg") # 可以保存成SVG矢量图格式,放大没有锯齿
plt.show() #展示图形
效果
matplot的散点图、直方图、柱状图
我们需要清楚不同图形的应用场景
- 散点图:scatter方法,注意横坐标,避免数据重合
- 条形图:bar方法,barh把轴交换,横向。
- 直方图:hist
更多的画图工具
百度的echart
python的plotly
总结
后记
Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。