Matplotlib python соединить два графика рассеяния с линиями для каждой пары значений (x, y)? - PullRequest
0 голосов
/ 13 февраля 2019

У меня возникли проблемы при соединении двух наборов точек на точечной диаграмме друг с другом, так что линия (в этом примере с использованием фиктивных данных) соединяет все точки «до» с соответствующими точками «после».Аргумент 'marker =' o- 'не работает для plt.разброс, но делает для плт.сюжет.Предложения о том, как связать соответствующие значения?Спасибо и надеюсь, что этот вопрос имеет смысл!

import matplotlib.pyplot as plt
import numpy as np
x1 = ["pre"] * 4
x2 = ["post"] * 4
y1 = [0.1, 0.15, 0.13, 0.25]
y2 = [0.85, 0.76, 0.8, 0.9]
plt.scatter(x1, y1, color='y')
plt.scatter(x2, y2, color='g')
plt.show()

1 Ответ

0 голосов
/ 13 февраля 2019

Хотя @ImportanceOfBeingErnest уже дал вам, казалось бы, самое простое из возможных решений, вам может быть интересно узнать альтернативное решение, чтобы получить то, что вы хотите.Вы можете использовать LineCollection

from matplotlib.collections import LineCollection

fig, ax = plt.subplots()

# Rest of your code

lines = [[x, list(zip([1]*4, y2))[i]] for i, x in enumerate(zip([0]*4, y1))]
print (lines)
# [[(0, 0.1), (1, 0.85)], [(0, 0.15), (1, 0.76)], [(0, 0.13), (1, 0.8)], [(0, 0.25), (1, 0.9)]]

lc = LineCollection(lines)
ax.add_collection(lc)
plt.show()

enter image description here

...