一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。
用matplotlib生成基本图形非常简单,只需要几行代码,但要创建复杂的图表,需要调用更多的命令和反复试验,这要求用户对matplotlib有深入的认识。
我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,分别使用matplotlib, seaborn, plotly等工具实现可视化。
初学者使用matplotlib创建图形前,应该先学习matplotlib的基础知识,阅读另一篇文章:Python数据可视化:认识matplotlib
本文主题是如何用Matplotlib创建曲线图(lineplot)。
本文来自《数据黑客》,登录官网可精彩资讯和文章。数据黑客 - 专注金融大数据的内容聚合和数据聚合平台
import numpy as np
import matplotlib.pyplot as plt
# 在jupyter notebook显示图形
%matplotlib inline
# 选择'ggplot'样式
plt.style.use("ggplot")
1. 基础线图
使用matplotlib创建图形的四个基本步骤:准备数据
创建Figure和Axes对象,前者一般简称为fig, 是所有数据和几何图形的容器,后者一般简称为ax,代表坐标轴,包含标题,横坐标/纵坐标,图例等对象元素
调用ax.plot(),将数据映射到图表
调整样式,如添加标题,改变颜色等
matplotlib提供两种不同的绘图接口:有状态接口(plt绘图函数)和无状态接口(面向对象),我们将使用面向对象范式。
# 准备数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
y2 = np.cos(x)
# 创建Figure和Axes对象
# 创建方法1:分别调用plt.figure(), plt.subplot()
# fig = plt.figure()
# ax = plt.subplot()
# 创建方法2:直接调用plt.subplots() -> 返回(Figure, Axes)元组
# figsize参数控制图形的大小
fig, ax = plt.subplots(figsize=(12, 7))
# 调用Axes对象的绘图接口,映射数据
ax.plot(x, y)
ax.plot(x, y2) # 多次调用将继续添加数据到图表
2. 调整颜色,样式和大小
参数'color'控制颜色,接收任意能够代表颜色的字符串。如果不指定颜色,matplotlib会自动会多条曲线选择颜色。
x = np.arange(100)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, x, color="red") # 用名字代表颜色, 'red'代表红色
ax.plot(x, x + 10, color="b") # 颜色代码,(rgbcmyk)
ax.plot(x, x + 20, color="0.25") # 灰度,取值0-1
ax.plot(x, x + 30, color="#FFDD44") # 十六进制代码
ax.plot(x, x + 40, color=(1.0,0.2,0.3)) # RGB 元组,元素取值0-1
参数'linestyle'控制曲线的样式,有包括实线和虚线在内的多种样式可供选择,默认为实线。
x = np.arange(100)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, x, linestyle="solid") # 实线,等价于'-'
ax.plot(x, x + 10, linestyle="dashed") # 虚线,等价于'--'
ax.plot(x, x + 20, linestyle="dashdot") # 点画线,等价于'-.'
ax.plot(x, x + 30, linestyle="dotted") # 点线,等价于':'
ax.plot()有一个可选参数'fmt',可以直接指定曲线的颜色和样式。
x = np.linspace(0, 10, 100)
y = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, y, "r-") # 红色实线,等价于color="red", linestyle="solid"
ax.plot(x, y2, "b--") # 蓝色虚线,等价于color="blue", linestyle="dashed"
参数'linewidth'调整曲线的大小,用一个实数代表相对大小。
x = np.linspace(0, 10, 100)
y = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, y, linewidth=3.0)
ax.plot(x, y2, linewidth=6.0)
3. 调整坐标轴的范围
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, y, "r-")
ax.set_xlim(-2, 12) # 提供(xmin, xmax)
ax.set_ylim(-1.5, 1.5) # 提供(ymin, ymax)
4. 添加标题,坐标轴标签和图例
优秀的可视化要传递有效的信息,有一些图形元素必不可少,例如标题,坐标轴标签,如果有多条曲线,为每条曲线添加标签是合理的。
用面向对象的方法调整样式时,主要通过调用类似ax.set_title()这样的方法来完成。所有设置方法请参考官方文档.
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(12, 7))
# 设置label参数,为每条曲线添加标签
ax.plot(x, np.sin(x), label="sin(x)")
ax.plot(x, np.cos(x), label="cos(x)")
# 调用一系列set方法来设置样式
ax.set_title("Simple Line Plot", fontdict={"fontsize": 25}) # 添加标题,调整字符大小
ax.set_xlabel("x") # 添加横轴标签
ax.set_ylabel("y=f(x)") # 添加纵轴标签
ax.legend(loc="best") # 展示图例
5. 同时调整多个样式
调用ax.set()接口可以同时设置多个样式,避免逐个调用的繁琐。
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(x, np.sin(x), "r-", label="sin(x)", linewidth=2)
ax.plot(x, np.cos(x), "b--", label="cos(x)", linewidth=3)
ax.set(xlim=(-2, 12), ylim=(-1.5, 1.5),
xlabel="x", ylabel="y=f(x)",
title="Simple Line Plot")
ax.legend(loc="best")
结论
本文介绍了如何用matplotlib创建曲线图,以及调整样式的基础方法。初学者只有掌握了这些基础方法,才能进阶到更加复杂的图形。接下来我们将继续探索柱状图,散点图和更多可视化方法,创建更多美观的图形。数据黑客 - 专注金融大数据的内容聚合和数据聚合平台
我们聚合全网最优秀的资讯和教程:金融大数据
机器学习/深度学习
量化交易
数据工程
编程语言,Python,R,Julia,Scala,SQL
我们提供开源数据接口:下载国内和国外海量金融数据
API接口,将数据整合到您的平台