

# markerArr is an array of maker string,

Ptch = mpatches.PathPatch(path, fill = True, transform = trans) These points are not connected with a line or represent any bar. # m is a string of scatter marker, it could be 'o', 's' etc. A scatter plot contains points that are floating all over the screen. Import ansforms as mtransformsįrom llections import PatchCollection # also import these, to recreate the within env of scatter command # axx is the axes object that current draw, you get it from So whenever you have a scatter points to draw you can do this: # rgbaArr is a N*4 array of float numbers you know what I mean The command pyplot.scatter return a PatchCollection Object, in the file "matplotlib/collections.py" a private variable _facecolors in Collection class and a method set_facecolors. A scatter plot displays the relationship between 2 numeric variables, one being displayed on the X axis (horizontal) and the other on the Y axis (vertical).
#Python matplotlib scatter plot code
The code is also inspired by the source code of pyplot.scatter, I just duplicated what scatter does without trigger it to draw. this trick also could be apply to draw path collection, line collection. so it is very tacky, but I can do it in whatever shape, colour, size and transparent. When I was doing my 10000-line project I figure out a general solution to bypass it. You have two option of using scatter command with multiple colour in a single call.Īs pylab.scatter command support use RGBA array to do whatever colour you want īack in early 2013, there is no way to do so, since the command only support single colour for the whole scatter point collection. This answer is dedicate to endless passion for correcting the 2013 version of myself in 2015. But after that it is quite trivial.īecause present version of support assigning: array of colour name string, array of float number with colour map, array of RGB or RGBA. This question is a bit tricky before Jan 2013 and matplotlib 1.3.1 (Aug 2013), which is the oldest stable version you can find on matpplotlib website. The output gives you different colors even when you have many different scatter plots in the same subplot. #The only piece of code that you need: #Now this is actually the code that you need, an easy fix your colors just cut and paste not you need ax.Ĭolormap = plt.cm.gist_ncar #nipy_spectral, Set1,PairedĬolorst = #Let's generate some random X, Y data X =. scatter with no error bars) you can also change the colours after that you have plotted them, this sometimes is easier to perform. If you have only one type of collections (e.g. Xs=X*nRows #use list multiplication for repetition I think the most elegant way is that suggesyted by do a loop making multiple calls to scatter.īut if for some reason you wanted to do it with just one call, you can make a big list of colors, with a list comprehension and a bit of flooring division: import matplotlibĬolors = matplotlib.cm.rainbow(np.linspace(0, 1, len(Ys)))Ĭs = for i in range(len(Ys)*len(X))] #could be done with numpy's repmat When you have a list of lists and you want them colored per list.

The code below produces a scatter plot with star shaped markers. text ( x + 0.The normal way to plot plots with points in different colors in matplotlib is to pass a list of colors as a parameter. Just use the marker argument of the plot() function to custom the shape of the data points. plot ( x, y, marker = all_poss, markerfacecolor = 'orange', markersize = 23, markeredgecolor = "black" ) plt. yticks ( ) #plt.set_xlabel(size=0) # Make a loop to add markers one by one num = 0 for x in range ( 1, 5 ) : for y in range ( 1, 5 ) : num += 1 plt. ylim ( 0.5, 4.5 ) # remove ticks and values of axis: plt. show ( ) # = Right figure: all_poss = # to see all possibilities: # () # set the limit of x and y axis: plt. plot ( 'x_values', 'y_values', data = df, linestyle = 'none', marker = '*' ) plt.
