前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据分析之Matplotlib

Python数据分析之Matplotlib

作者头像
PM小王
发布2019-07-01 15:22:05
8220
发布2019-07-01 15:22:05
举报
文章被收录于专栏:程序员小王

写在前面

今天给大家介绍三剑客之一Matplotlib的使用。首先简单介绍用Matplotlib绘制2D和3D图表,具体的方法和属性并没有过多介绍,但是代码中都做了响应的介绍。

1

为什么学习Matplotlib?

Matplotlib能够将数据进行可视化,更直观的呈现,使数据更加客观,更具说服力。

2

什么是Matplotlib?

Matplotlib:最流行的python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

3

Matplotlib绘制2D图表

Matplotlib中最基础的模块是pyplot。先用最简单的点图和线图来介绍Matplotlib,比如我们有一组数据,还有一个拟合模型,通过下面的代码图来可视化。

pyplot的属性和方法来画出风格多样的图像,可以参考官网:

https://matplotlib.org/api/pyplot_api.html

代码语言:javascript
复制
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# 通过rcParams设置全局横纵轴字体大小
mpl.rcParams['xtick.labelsize'] = 24
mpl.rcParams['ytick.labelsize'] = 24
np.random.seed(42)
# x轴的采样点
x = np.linspace(0, 5, 100)
# 通过下面曲线加上噪声生成数据,
所以拟合模型就用y了
y = 2 * np.sin(x) + 0.3 * x ** 2
y_data = y + np.random.\
normal(scale=0.3, size=100)
# figure()指定图表名称
plt.figure('data')
# '.'标明画散点图,每个散点的形状是个圆
plt.plot(x, y_data, '.')
# 画模型的图,plot函数默认画连线图
plt.figure('model')
plt.plot(x, y)
# 两个图画一起
plt.figure('data & model')
# 通过'k'指定线的颜色,lw指定线的宽度
# 第三个参数除了颜色也可以指定线形,
比如'r--'表示红色虚线
plt.plot(x, y, 'k', lw=3)
# scatter可以更容易地生成散点图
plt.scatter(x, y_data)
#将当前figure的图保存到文件result.png
plt.savefig('result.png')
#将画好的图显示在屏幕上
plt.show()

小提示:

matplotlib和pyplot的惯用别名分别是mpl和plt

最终的图像:

4

Matplotlib绘制3D图表

Matplotlib中也能支持一些基础的3D图表,比如曲面图,散点图和柱状图,只是需要使用使用mpl_toolkits模块。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
np.random.seed(42)
# 采样个数500
n_samples = 500
dim = 3
# 先生成一组3维正态分布数据,
数据方向完全随机
samples = np.random.multivariate_normal(
    np.zeros(dim),
    np.eye(dim),
    n_samples
)
# 通过把每个样本到原点距离和均匀分布
# 吻合得到球体内均匀分布的样本
for i in range(samples.shape[0]):
  r = np.power(np.random.random(), 1.0 / 3.0)
  samples[i] *= r / np.linalg.norm(samples[i])

upper_samples = []
lower_samples = []

for x, y, z in samples:
    # 3x+2y-z=1作为判别平面
    if z > 3 * x + 2 * y - 1:
        upper_samples.append((x, y, z))
    else:
        lower_samples.append((x, y, z))

fig = plt.figure('3D scatter plot')
ax = fig.add_subplot(111, projection='3d')

uppers = np.array(upper_samples)
lowers = np.array(lower_samples)

#用不同颜色不同形状的图标
表示平面上下的样本
#判别平面上半部分为
红色圆点下半部分为绿色三角
ax.scatter(uppers[:, 0], uppers[:, 1], 
           uppers[:, 2], c='r', marker='o')
ax.scatter(lowers[:, 0], lowers[:, 1],
           lowers[:, 2], c='g', marker='^')

plt.show()

效果图:

Matplotlib在2D图表中除了绘制点和线图表同样可以绘制柱状或饼状类型的图,我只是做了一个简单的介绍,Matplotlib也支持图像的存取和显示,并且和OpenCV一类的接口比起来,对于一般的二维矩阵的可视化要方便。

未完待续...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档