如何使用颜色图绘制 matplotlib 线图?

Posted

技术标签:

【中文标题】如何使用颜色图绘制 matplotlib 线图?【英文标题】:How to plot a matplotlib line plot using colormap? 【发布时间】:2019-03-23 20:45:35 【问题描述】:

如何使用 python matplotlib 创建线图,以使线的颜色相对于另一个系列有所不同?

举个简单的例子:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)
y = np.sin(2 * np.pi * t)
z = (t-1) ** 2

fig = plt.figure()
ax = plt.axes()
ax.plot(t, y)
ax.plot(t, z)
plt.show()

代替:

我想只绘制 (t, y) 的图形,使线条颜色代表 z 遵循某个颜色图 (cmap) 的值,例如“等离子”。

编辑:

这个问题被标记为可能重复,但引用了question,其中所需的结果是一条改变颜色的线以帮助遵循它绘制的路径(序列信息),而不是添加关于另一个值的信息(在这个案例 z)。

正如 cmets 中所指出的,它更接近 this example,但我一直在寻找比创建一组线段并单独着色更简单的方法。

【问题讨论】:

似乎multicolored_line example 不是很可追溯。您能否帮助我们并告诉我们您在搜索引擎中使用的哪些概念不会导致此弹出窗口? 感谢您的关注,@ImportanceOfBeingErnest。我之前可以到达 multicolored_line 示例,但是 “创建一组线段,以便我们可以单独为它们着色。这会将点创建为 N x 1 x 2 数组,以便我们可以轻松地将点堆叠在一起以获得段。线集合的段数组需要是 (numlines) x(每行点数)x 2(对于 x 和 y)" 似乎是一个 hack。我认为可能存在一种简单直接的方法...... 我明白了。好吧,下次在这里问问题时,请提及您发现的此类内容。它将帮助您获得更好的答案。那么你有什么建议如何以不同的方式表述吗?当然,有一个想法是有一个包装函数来创建这样的行集合,但还没有人真正致力于它。 This question 可能很有趣,以防您不想看到图中的各个部分。 Appart,我不知道“更简单”是什么意思。如果您对自己的期望有清晰的认识,当然可以尽可能详细地描述它,我们可以重新提出问题? 从概念上讲,除了按线段着色(即***.com/questions/10252412)之外没有其他选项,但您可以编写一个插值函数来平滑颜色过渡,这是您关心的问题。另请参阅该答案中的最后一条评论。 【参考方案1】:

使用引用in an answer to the question you said is not a duplicate of this的colorline函数,可以做到这一点:

from colorline import colorline

colorline(t, y, z)
plt.xlim(t.min(), t.max())
plt.ylim(y.min(), y.max())
plt.show()

这会创建多个线段,每个线段的颜色由z 确定。

【讨论】:

看到这就是问题被重新打开的问题。你得到相同的重复答案。 :-( @ImportanceOfBeingErnest:但是这部分在什么意义上没有回答所提出的问题?它与另一个问题的答案略有不同(另一个答案的OP必须采用此功能,而它直接旨在解决这样的问题)。【参考方案2】:

我不认为使用线图有简单的方法,但是使用散点图就很容易了。如果你还想要一条连接线,你可以在后面加一条灰线来伪装一下:

ax.scatter(t, y, c=z, marker='.')
ax.plot(t, y, c='gray')

【讨论】:

以上是关于如何使用颜色图绘制 matplotlib 线图?的主要内容,如果未能解决你的问题,请参考以下文章

学会Python-Matplotlib可视化,快速完成数据分析——自定义颜色绘制精美统计图

使用Matplotlib绘制数据图

Python图形绘制:如何用Matplotlib和pandas绘图?

pyhton中matplotlib箱线图的绘制(matplotlib双轴图箱线图散点图以及相关系数矩阵图))

python matplotlib 绘制训练曲线 综合示例——平滑处理图题设置图例设置字体大小线条样式颜色设置

Python中matplotlib绘制折线图方法总结