Matplotlib数据可视化:折线图与散点图

简介: Matplotlib数据可视化:折线图与散点图
from matplotlib import pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体支持


对于折线图的绘制,在之前文章的示例中都有使用,在面向对象绘图方法中,一般是创建axes实例后调用plot()方法实现折线图绘制,并通过传递各种参数实现对图像的设置。散点图的绘制通过axes实例的scatter()方法来实现。scatter()方法的参数和参数取值与绘制折线图的plot()方法基本一致,所以本文将两种图放在一起进行介绍。


1 多图像绘制


在一个axes中,可以绘制多条折线图,秩序多次调用plot()或者scatter()方法即可。


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)
# 折线图
axes[0].set_title('图1 折 线 图')
axes[0].plot(x1, y1)
axes[0].plot(x1, y1+0.5)
# 散点图
axes[1].set_title('图2 散 点 图')
axes[1].scatter(x1, y1)
axes[1].scatter(x1, y1+0.5)
plt.show()


640.png

2 颜色


颜色通过color参数来设置,color参数的值可以使颜色的英文全称,例如'green'、'red',也可以是简写,例如'g'表示'green'、'r表示'red',一些常见颜色全称和简写如下所示。


  • 'b' ,         blue
  • 'g' ,         green
  • 'r' ,         red
  • 'c' ,         cyan
  • 'm' ,         magenta
  • 'y' ,         yellow
  • 'k' ,         black
  • 'w' ,         white


如果觉得这些常见的颜色不够用,设置可以用16进制字符来表示颜色。


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)
# 折线图
axes[0].set_title('图1 折 线 图')
axes[0].plot(x1, y1, color='red')  # 红色
axes[0].plot(x1, y1+0.5, color='g')  # 绿色
axes[0].plot(x1, y1+1, color='#008000')  # 也是绿色
# 散点图
axes[1].set_title('图2 散 点 图')
axes[1].scatter(x1, y1, color='red')  # 红色
axes[1].scatter(x1, y1+0.5, color='g')  # 绿色
axes[1].scatter(x1, y1+1, color='#008000')  # 也是绿色
plt.show()


640.png


3 图例


axes实例中提供了legend()方法用于添加图例,legend()方法会将元素的label字符串设置为图例,如下面的示例所示,有两种参数传递方式来设置label。除了label外,还可以传递loc参数来设置图例的位置,loc参数值可以使代表位置的字符串,也可以是对应的整数,其对应关系如下所示:


===============   =============
    Location String   Location Code
    ===============   =============
    'best'            0
    'upper right'     1
    'upper left'      2
    'lower left'      3
    'lower right'     4
    'right'           5
    'center left'     6
    'center right'    7
    'lower center'    8
    'upper center'    9
    'center'          10
    ===============   =============


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(3, 2, figsize=(10, 8), tight_layout=True)
axes[0, 0].plot(x1, y1, label='线1')  # 传递label参数
axes[0, 0].plot(x1, y1+0.5, label='线2')  # 传递label参数
axes[0, 0].legend(loc='best')  # 默认就是best
axes[1, 0].plot(x1, y1, label='线1')  # 传递label参数
axes[1, 0].plot(x1, y1+0.5, label='线2')  # 传递label参数
axes[1, 0].legend(loc='lower right')
line1, = axes[2, 0].plot(x1, y1)  # 注意,等号前面有逗号
line2, = axes[2, 0].plot(x1, y1+0.5)
axes[2, 0].legend(handles=(line1, line2), labels=('线1', '线2'), loc='upper center')
axes[0, 1].scatter(x1, y1, label='第一组')  # 传递label参数
axes[0, 1].scatter(x1, y1+0.5, label='第二组')  # 传递label参数
axes[0, 1].legend(loc='best')  # 默认就是best
axes[1, 1].scatter(x1, y1, label='第一组')  # 传递label参数
axes[1, 1].scatter(x1, y1+0.5, label='第二组')  # 传递label参数
axes[1, 1].legend(loc='lower right')
group1 = axes[2, 1].scatter(x1, y1)   # 注意,等号前面没有逗号,这是与plot()方法不同的
group2 = axes[2, 1].scatter(x1, y1+0.5) 
axes[2, 1].legend(handles=(group1, group2), labels=('第一组', '第二组'), loc='upper center')
plt.show()


640.png


4 线型


通过传递linestyle或ls参数可以设置线型,参数包含一下几种取值:


=============    ===============================
    character        description
    =============    ===============================
    ``'-'``          实线(默认)
    ``'--'``         长虚线
    ``'-.'``         点划线
    ``':'``          虚线
    =============    ===============================
x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.plot(x1, y1, color='black', label='-', ls='-')  # 默认线性就是'-'
axes.plot(x1, y1+0.5, color='green', label='--',ls='--')
axes.plot(x1, y1+1, color='blue',  label='-.', linestyle='-.')
axes.plot(x1, y1+1.5, color='red', label=':', ls=':')
axes.legend()
plt.show()

640.png


5 标记(形状)


参数marker可以在图形中添加标记,标记参数值和对应的标记类型如下所示:


=============    ===============================
    character        description
    =============    ===============================
    ``'.'``          点
    ``','``          像素点
    ``'o'``          圆
    ``'v'``          向下三角形
    ``'^'``          向上三角形
    ``'<'``          向左三角形
    ``'>'``          向右三角形
    ``'1'``          向下T形
    ``'2'``          向上T形
    ``'3'``          向左T形
    ``'4'``          向右T形
    ``'s'``          正方形
    ``'p'``          五边形
    ``'*'``          星型
    ``'h'``          六边形1
    ``'H'``          六边形2
    ``'+'``          十字形
    ``'x'``          x 形
    ``'D'``          大菱形
    ``'d'``          小菱形
    ``'|'``          竖线
    ``'_'``          横线
    =============    ===============================


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)
axes[0].plot(x1, y1, color='black', label='.', marker='.') 
axes[0].plot(x1, y1+0.5, color='green', label=',', marker=',')
axes[0].plot(x1, y1+1, color='blue',  label='o', marker='|')
axes[0].plot(x1, y1+1.5, color='red', label='v', marker='_')
axes[0].legend()
axes[1].scatter(x1, y1, color='black', label='.', marker='.') 
axes[1].scatter(x1, y1+0.5, color='green', label=',', marker=',')
axes[1].scatter(x1, y1+1, color='blue',  label='o', marker='|')
axes[1].scatter(x1, y1+1.5, color='red', label='v', marker='_')
axes[1].legend()
plt.show()


640.png


绘制折线图时,在传递了marker参数后,也可以通过以下参数进一步设置标记的样式:


  • markeredgecolor 或 mec : 边框颜色
  • markeredgewidth 或 mew :边框粗细
  • markerfacecolor 或 mfc :填充色
  • markersize 或 ms :大小


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.plot(x1, y1, color='blue', label='线1', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red', markeredgewidth=3) # 线1
axes.plot(x1, y1+0.5, color='blue', label='线2', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red')   # 线2
axes.plot(x1, y1+1, color='blue', label='线3', marker='*',markersize=5, markerfacecolor='red')   # 线3
axes.plot(x1, y1+1.5, color='blue', label='线4',marker='*',markersize=10, markerfacecolor='red')   # 线4
axes.legend()
plt.show()


640.png


散点图修改点的样式时,参数与折线图有些许不同:


  • s : 大小
  • color 或 c : 填充色
  • alpha:透明度
  • linewidths:边框粗细
  • edgecolors:边框颜色


x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.scatter(x1, y1, color='green', label='第一组', marker='*',s=105,edgecolors='red', linewidths=5)
axes.scatter(x1, y1+0.5, color='green', label='第二组', marker='*',s=15)
axes.scatter(x1, y1+1, color='blue', label='第三组', marker='*',s=5)
axes.scatter(x1, y1+1.5, color='blue', label='第四组',marker='*',s=10)
axes.legend()
plt.show()

640.png


6 显示坐标


显示坐标可以用添加text的方法实现:


x1 = [i*0.1 for i in range(0, 50, 5)]
y1 = [i*i for i in x1]
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)
axes[0].plot(x1, y1, color='red', label='.', marker='.')  # 默认线性就是'-'
axes[1].scatter(x1, y1, color='blue', label='.', marker='*')  # 默认线性就是'-'
for a, b in zip(x1, y1):  
    axes[0].text(a, b, (a,b),ha='left', va='top', fontsize=10) 
    axes[1].text(a, b, (a,b),ha='left', va='top', fontsize=10)
plt.show()


640.png

相关文章
|
2月前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
48 1
|
1天前
|
移动开发 数据可视化 数据挖掘
利用Python实现数据可视化:以Matplotlib和Seaborn为例
【10月更文挑战第37天】本文旨在引导读者理解并掌握使用Python进行数据可视化的基本方法。通过深入浅出的介绍,我们将探索如何使用两个流行的库——Matplotlib和Seaborn,来创建引人入胜的图表。文章将通过具体示例展示如何从简单的图表开始,逐步过渡到更复杂的可视化技术,帮助初学者构建起强大的数据呈现能力。
|
1月前
|
Python
Matplotlib 教程 之 Matplotlib 散点图 1
通过设置参数如点的大小(`s`)、颜色(`c`)和样式(`marker`)等,可以定制图表外观。示例展示了如何用两个长度相同的数组分别表示 x 和 y 轴的值来创建基本散点图。
43 12
|
1月前
|
数据可视化 Python
Matplotlib 教程 之 Matplotlib 散点图 7
使用 Matplotlib 的 `scatter()` 方法绘制散点图。该方法接受多个参数,如 x 和 y 数据点、点的大小(s)、颜色(c)和样式(marker)等。通过示例展示了如何利用颜色数组和颜色映射 (`cmap`) 来增强图表的表现力,并使用 `colorbar()` 方法添加颜色条,使数据可视化更加直观。
32 1
|
1月前
|
数据可视化 数据挖掘 API
Python中的数据可视化利器:Matplotlib与Seaborn对比解析
在Python数据科学领域,数据可视化是一个重要环节。它不仅帮助我们理解数据,更能够让我们洞察数据背后的故事。本文将深入探讨两种广泛使用的数据可视化库——Matplotlib与Seaborn,通过对比它们的特点、优劣势以及适用场景,为读者提供一个清晰的选择指南。无论是初学者还是有经验的开发者,都能从中找到有价值的信息,提升自己的数据可视化技能。
77 3
|
26天前
|
数据可视化 定位技术 Python
Python数据可视化--Matplotlib--入门
Python数据可视化--Matplotlib--入门
22 0
|
2月前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
31 4
|
2月前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
55 16
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
46 2
|
2月前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。