数据可视化
基本概念
数据可视化是指借助于图像化的手段,清晰,快捷有效的传达与沟通信息。同事,也可以辅助用户做出相应的判断更好的去洞悉数据背后的价值。
字不如表,表不如图
观察号码的频率。每个号码出现了多少次?
matplotlib
matplotlib是用于Python的绘图库,提供各种常用图形的绘制,例如:条形图,柱形图,线图,散点图等
安装
pip install matplotlib
导入
import matplotlib as mpl
improt matplotlib.pyplot as ply
图形绘制
绘制线图
可以通过matplotlib.pyplot方法进行图形绘制
- plot(y)
- plot(y,“格式”)
- plot(x,y)
- plot(x,y,“格式”)
- plot(x1,y1,“格式”,x2,y2,“格式”,…xn,yn,“格式n”)
import matplotlib as mpl
import matplotlib.pyplot as ply
import numpy as np
# 如果只画一个点,则无法看到该点,我们需要加上marker。
plt.plot([10],marker="o")
# 如果只有y没有x则x的默认值为0,1,2······
plt.plot([5,20], marker="o")
# 指定格式
plt.plot([5,20],"r-o")
# 我们也可以显示的指定x。(横坐标)
# x,y两个数组,对位取元素,构成一个坐标,进行绘制。
plt.plot([2,-1,5,6,8],[10,-2,6,23,10])
plt.plot([1,2],[3,4],"ro-",[4,2],[1,3],"--g<")
# 也可以分开绘制
plt.plot([1,2],[3,4],"ro-")
plt.plot([4,2],[1,3],"--g<")
# 画曲线。
x = np.linspace(0,2*np.pi,num=10)
y = np.sin(x)
plt.plot(x,y)
图形交互式设置
我们可以设置jupyter notebook图形是否交互式显示,默认为否。
- %matploblit notebook
- %matplotlib inline
设置中文支持
matplotlib默认情况下不支持中文显示,如果需要显示中文,则我们需要做一些额外的设置操作。
- 全局设置
- 局部设置
全局设置
我们可以通过执行:
mpl.rcParams[“font.family”] = “中文字体名称”
mpl.rcParams[“axes.unicode_minus”] = False
进行设置,常用的设置如下:
- font.family 字体的名称
- sans-serif 西文字体(默认)
- SimHei 中文黑体
- FangSong 中文仿宋
- YouYuan 中文幼圆
- STSong 华文宋体
- Kiaiti 中文楷体
- LiSu 中文隶书
- fong.style 字体的风格
- normal 常规(默认)
- itallic 斜体
- oblique 倾斜
- font.size 字体的大小(默认10)
- axes.unicode_minus 是否使用Unicode的减号(符号)【在支持中文显示状态下,需要设置为False】
局部设置
在需要显示的文字中,使用fontproperties参数进行设置。
说明:
- 如果全局设置与局部设置冲突,以局部设置为准。
# matplotlib默认不支持中文显示,如果需要显示中文,需要将字体设置成支持中文的字体。
mpl.rcParams["font.family"] = "SinHei"
# 但是,字体设置成支持中文的字体后,负号(-)也会使用中文的符号,而中文的符号又不支持显示。
# 因此,我们将负号该成英文的负号。
mpl.rcParams["xes.unicode_minus"] = False
# 也可以设置字体的风格(对中文体没效果)
mpl.rcParams["font.style"] = "italic"
# 设置字体的大小
mpl.rcParams["font.size"] = 20
plt.plot([1,2,3],[4,5,6])
plt.title("标题")
# 使用mpl.rcParams设置参数时,是一种全局的设置,我们也可以进行局部设置,仅对当前的绘制生效。当全局设置与局部设置冲突是,以局部设置为准。
plt.plot([-1,-2,-3],[4,5,6])
plt.title("标题",fontsize=20, fontproperties="SinHei")
保存图表
通过plt的sivefig方法将当前的图形保存到硬盘或着类文件对象中。
- dpi:每英寸分辨率点数。
- facecolor:设置图像的背景色。
- bbox_inches:设置为tight,可以紧凑保存图像。
x = np.linspace(0, 2*pi, num=100)
y = np.sin(x)
plt.plot(x,y)
# 保存图像,保存到硬盘上
plt.savefig("c:/111.jpg",dpi=100,facecolor="g(或者'#ff0000')",bbox_inches="tight")
# 读取对象
# pillow
from PIL import Image
image = Image.open("c:/111.jpg")
# 使用系统默认的图像浏览工具打开图像。
image.show()
# 保存图像,保存到类文件对象中。
from io import BytesIO
bio = BytesIO()
plt.savefig(bio)
# bio.read()
# 获取缓存区中的数据内容。
bio.getvalue()
bio.seek(0)
bio.read()
颜色,点标记与线型设置
我们可以在绘制图形时,显式指定图形的颜色,点标记或线条形状。具体设置可以产看帮助文档。
- color©:线条颜色。
- linestyle(ls):线条形状
- linewidth(lw):线宽
- marker:点标记形状
- markersize(ms):点标记大小
- markeredgecolor(mec):点边缘颜色
- markeredgewidth(mew):点边缘宽度
- markerfacecolor(mfc):点的颜色
说明:
- 颜色,点