Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MatPlotLib: Multiple datasets on the same scatter plot

I want to plot multiple data sets on the same scatter plot:

cases = scatter(x[:4], y[:4], s=10, c='b', marker="s") controls = scatter(x[4:], y[4:], s=10, c='r', marker="o")  show() 

The above only shows the most recent scatter()

I've also tried:

plt = subplot(111) plt.scatter(x[:4], y[:4], s=10, c='b', marker="s") plt.scatter(x[4:], y[4:], s=10, c='r', marker="o") show() 
like image 697
Austin Richardson Avatar asked Nov 24 '10 18:11

Austin Richardson


People also ask

How do I plot multiple Scatterplots in Matplotlib?

Multiple scatter plots can be graphed on the same plot using different x and y-axis data calling the function Matplotlib.pyplot.scatter() multiple times. Importing the required module. x1,y1, and x2,y2 are the list of the data to visualize different scatter plots on the same graph.


2 Answers

You need a reference to an Axes object to keep drawing on the same subplot.

import matplotlib.pyplot as plt  x = range(100) y = range(100,200) fig = plt.figure() ax1 = fig.add_subplot(111)  ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first') ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second') plt.legend(loc='upper left'); plt.show() 

enter image description here

like image 160
nate c Avatar answered Oct 20 '22 18:10

nate c


I came across this question as I had exact same problem. Although accepted answer works good but with matplotlib version 2.1.0, it is pretty straight forward to have two scatter plots in one plot without using a reference to Axes

import matplotlib.pyplot as plt  plt.scatter(x,y, c='b', marker='x', label='1') plt.scatter(x, y, c='r', marker='s', label='-1') plt.legend(loc='upper left') plt.show() 
like image 37
Sohaib Farooqi Avatar answered Oct 20 '22 17:10

Sohaib Farooqi