t_transform(mtransforms. # markerArr is an array of maker string, Ptch = mpatches.PathPatch(path, fill = True, transform = trans) 1 Answer Sorted by: 4 In matplotlib, you can easily generate custom legends. used only for the legend): plt.legend (listofproxyartists, listoflabels). # m is a string of scatter marker, it could be 'o', 's' etc. The idea to make the legend is to create proxy artists (i.e. 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. 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. A 2-D array in which the rows are RGB or RGBA. When I was doing my 10000-line project I figure out a general solution to bypass it. In-order to create a scatter plot with several colors in matplotlib, we can use the various methods: Using the parameter marker color to create a Scatter Plot The possible values for marker color are: A single color format string. 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 differnent 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. Wtf = np.square(wtf - wtf)Īx.scatter(wtf,wtf,c=wtf,s=wtf,alpha=0.The normal way to plot plots with points in different colors in matplotlib is to pass a list of colors as a parameter. This worked out well except I cant display color legends for my plot. I also used "compression ratio" of each car from a seperate dataframe to dictate the point point size Out of which I made a scatter plot with horsepower on x axis, engine size on y axis and using body-style as a color scheme to differentiate body classes and. I have some basic car engine size, horsepower and body type data (sample shown below) body-style engine-size horsepower
0 Comments
Leave a Reply.AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |