Reputation: 269
I am trying to plot a series of curves on the same graph with individual markers:
For this, I created 3 lists of lists: x_data
, y_data
and markers
. Using np.array()
, x_data
and y_data
can be plotted properly as different curves (with individual colours).
However, np.array()
cannot be used with the attribute marker
and I do not know how to pass markers
to ax.plot()
.
Does someone know how to attribute individual markers?
MWE
import matplotlib.pyplot as plt
import numpy as np
x_data=[[1,2,3,4,5],[5,10,3,8,6]]
y_data=[[5,10,3,8,6],[1,2,3,4,5]]
markers=[["o","+","D","+","D"],["D","o","o","D","+"]]
fig, ax = plt.subplots()
for n in range(0,len(x_data)):
ax.plot(np.array(x_data[n]), np.array(y_data[n]),linewidth=1,marker=np.array(markers))
plt.show()
Upvotes: 1
Views: 346
Reputation: 50008
One option is an inner loop to scatter plot each marker individually:
import matplotlib.pyplot as plt
import numpy as np
x_data=[[1,2,3,4,5],[5,10,3,8,6]]
y_data=[[5,10,3,8,6],[1,2,3,4,5]]
markers=[["o","+","D","+","D"],["D","o","o","D","+"]]
fig, ax = plt.subplots()
for xs, ys, markers in zip(x_data, y_data, markers):
line = ax.plot(xs, ys, linewidth=1)
colour = line[0].get_color()
for x, y, marker in zip(xs, ys, markers):
ax.scatter(x, y, marker=marker, color=colour)
plt.show()
Output:
Upvotes: 1