gpt4 book ai didi

python - 使用 LineCollection 时添加线标记

转载 作者:太空狗 更新时间:2023-10-29 23:57:29 24 4
gpt4 key购买 nike

我正在使用 LineCollection在 matplotlib 中快速绘制大量不同颜色的线条。但是,即使查看了 LineCollection 文档,我也找不到任何方法来为线条设置线条标记。使用 LineCollection 时有什么方法可以有线标记吗?

注意:使用 pyplot.plot() 不是一个选项,因为它对于我的用例来说太慢了,它正在绘制大约 20 万行。

图示示例: enter image description here

用于生成示例的代码 ( original source ):

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

lines = [[(0, 1), (1, 1)], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]

lc = LineCollection(lines, colors=['r', 'g', 'b'])
fig = plt.figure()

ax1 = fig.add_subplot(1, 2, 1)
ax1.add_collection(lc)
ax1.autoscale()
ax1.set_title('Current')

# Doesn't seem to do anything
for l in ax1.lines:
l.set_marker('o')

ax2 = fig.add_subplot(1, 2, 2)
ax2.plot([0, 1], [1, 1], 'ro-')
ax2.plot([2, 3], [3, 3], 'go-')
ax2.plot([1, 1], [2, 3], 'bo-')
ax2.set_title('Goal')

plt.show()

最佳答案

我认为您不能将标记添加到 LineCollection。但是,使用 ax.scatterLineCollection 上绘制标记可能比使用 ax.plot

更快

例如,像这样的东西:

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

lines = [[(0, 1), (1, 1)], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]
colors = ['r', 'g', 'b']

lc = LineCollection(lines, colors=['r', 'g', 'b'])
fig = plt.figure()

ax1 = fig.add_subplot(1, 1, 1)
ax1.add_collection(lc)
ax1.autoscale()

x = [i[0] for j in lines for i in j]
y = [i[1] for j in lines for i in j]
c = [col for col in colors for _ in (0, 1)]

ax1.scatter(x, y, c=c)

plt.show()

enter image description here

关于python - 使用 LineCollection 时添加线标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com