You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(17) |
2
(3) |
3
(2) |
4
(11) |
5
(8) |
6
(22) |
7
(16) |
8
(9) |
9
(14) |
10
(1) |
11
(8) |
12
(5) |
13
(7) |
14
(10) |
15
(28) |
16
(8) |
17
(20) |
18
(6) |
19
(5) |
20
(15) |
21
(8) |
22
(7) |
23
(14) |
24
(10) |
25
(6) |
26
(8) |
27
(9) |
28
(11) |
29
(13) |
30
(20) |
|
Hi Ben, in your example > http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html the essential line is: ax.add_collection3d(poly, zs=zs, zdir='y') according to everything I see this can only draw something that is made out of several axes parallel parts. I don't think how with such a command you could end up with some picture like: http://matplotlib.sourceforge.net/plot_directive/mpl_examples/mplot3d/surface3d_demo.hires.png What I want to plot should look like that picture (with is part of your gallery), just that I don't have a meshgrid data underlying. Your second example seems to have the same limitation http://matplotlib.sourceforge.net/examples/mplot3d/pathpatch3d_demo.html just it works with the command art3d.pathpatch_2d_to_3d(p, z=0, zdir="x") The only way that I currently see is that I call ax.plot_surface() for each quadrilateral of my mesh. I'm actually only looking for a function which can shade a set of polygons that make up a picture like http://matplotlib.sourceforge.net/plot_directive/mpl_examples/mplot3d/surface3d_demo.hires.png I might be able to limit the polygons to be quadrilaterals only. The mesh will be nice in the sense that polygons do not intersect. Otherwise the list of polygons should be arbitrary. -Holger On Thu, Sep 29, 2011 at 17:33, Benjamin Root <ben...@ou...> wrote: > On Thu, Sep 29, 2011 at 4:09 AM, Holger Brandsmeier > <hol...@sa...> wrote: >> >> Dear list, >> >> is there an equivalent function to matlabs patch() function in matplotlib? >> http://dali.feld.cvut.cz/ucebna/matlab/techdoc/ref/patch.html >> That means a function which does not require its X,Y,Z arguments to >> come from a prior call to meshgrid? That is at least what I believe to >> be the requirement for Axes3DSubplot.plot_surface. >> >> In matlab you can pass n x k matrices as X,Y,Z argument, which then >> means that there are n Polygons (each with k vertices) and they each >> get shaded. The problem with the meshgrid structure is, that an >> unstructured mesh does not have this tensor structure, so if I have >> 1000 quadrilaterals, then I would have to call >> `Axes3DSubplot.plot_surface` for each of them separately. At least >> with `gtkagg` this even seems to fail with z-buffer problem. Btw. >> which backend to you recommend for 3D plots? >> >> -Holger > > There are some ways to do what you want. For some simple examples: > > http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html > http://matplotlib.sourceforge.net/examples/mplot3d/pathpatch3d_demo.html > > These examples show how you can take a normal 2D matplotlib patch and > convert it into a 3D object. > > Unfortunately, I do not have any example on hand on how to work with the 3D > versions of the objects directly, but that is possible. You can find the > classes in the 'mpl_toolkits.mplot3d.art3d' module. Do keep in mind that > mplot3d is currently only meant for simple 3D plots, as it can not properly > lay out a 3D environment (intersecting polygons, for example will look > Escher-like). As for backends, the only thing that mplot3d requires is that > it uses an Agg-based backend so that it can perform arbitrary rotation of > text elements (for axes labels). > > I hope this helps a bit. > Ben Root > > -- Holger Brandsmeier, SAM, ETH Zürich http://www.sam.math.ethz.ch/people/bholger
Hi I noticed that Basemap 1.0.2 will replace the old pyshapelib with the pure python shapelib.py. However, that did break some of my scripts when I use custom shapefiles. Here is a picture from Basemap 1.0.1, http://imageshack.us/photo/my-images/69/basemap101.png/ and here the same script under Basemap 1.0.2, http://imageshack.us/photo/my-images/854/basemap102.png/ and here is the script: http://pastebin.com/WfePCFJi It probably has something to do with the way shapelib.py handle the lines, As soon as I have some time I'll take a better look into that, but I would like to ask if anyone has seen this before and/or if you have a suggestion/solution for it. Thanks, Filipe
On Thu, Sep 29, 2011 at 4:09 AM, Holger Brandsmeier < hol...@sa...> wrote: > Dear list, > > is there an equivalent function to matlabs patch() function in matplotlib? > http://dali.feld.cvut.cz/ucebna/matlab/techdoc/ref/patch.html > That means a function which does not require its X,Y,Z arguments to > come from a prior call to meshgrid? That is at least what I believe to > be the requirement for Axes3DSubplot.plot_surface. > > In matlab you can pass n x k matrices as X,Y,Z argument, which then > means that there are n Polygons (each with k vertices) and they each > get shaded. The problem with the meshgrid structure is, that an > unstructured mesh does not have this tensor structure, so if I have > 1000 quadrilaterals, then I would have to call > `Axes3DSubplot.plot_surface` for each of them separately. At least > with `gtkagg` this even seems to fail with z-buffer problem. Btw. > which backend to you recommend for 3D plots? > > -Holger There are some ways to do what you want. For some simple examples: http://matplotlib.sourceforge.net/examples/mplot3d/polys3d_demo.html http://matplotlib.sourceforge.net/examples/mplot3d/pathpatch3d_demo.html These examples show how you can take a normal 2D matplotlib patch and convert it into a 3D object. Unfortunately, I do not have any example on hand on how to work with the 3D versions of the objects directly, but that is possible. You can find the classes in the 'mpl_toolkits.mplot3d.art3d' module. Do keep in mind that mplot3d is currently only meant for simple 3D plots, as it can not properly lay out a 3D environment (intersecting polygons, for example will look Escher-like). As for backends, the only thing that mplot3d requires is that it uses an Agg-based backend so that it can perform arbitrary rotation of text elements (for axes labels). I hope this helps a bit. Ben Root
On Wed, Sep 28, 2011 at 16:39, Jeff Whitaker <js...@fa...> wrote: > On 9/28/11 2:19 PM, Isidora wrote: >> Hi Filipe, >> >> I have just seen your answers. I am trying to plot on a background GIF map, lines like the ones you can see in http://www.spc.noaa.gov/products/outlook/day1probotlk_2000_wind.gif. I can plot the lines as you see them in this link without a problem. However, because those lines are not closed polygons, the filling extends only to a straight line between first and last point of the curve. >> I want the filling to extend all the way to the border of United States. >> >> Since drawcountries() return a Collection of paths without any metadata identifying the country/countries been separated by it, I cannot use it to mask the area outside ofthe borders out. >> >> I'd appreciate any link/documentation I could read to help me resolve this issue. >> >> Thank you > Isidora > > Nobody has tried to do this (that I know of), so I can't point you to > anything specific. Did you see my message about creating a gridded > field (say 1's for points inside and 0's for points outside the region), > the calling contour to draw the line? You can use the is_land method to > determine if a point is over land or not, but there is not way to > determine whether a given point is inside a country. As you found out, > there is no metadata associated with the coastlines or political > boundary lines. > > The fillcontinents method returns a list matplotlib polygon instances > that represent the land areas. One of them is North America, and could > be used to clip your line segments - but there is no easy way to > determine which one it is. > > If you can find a shapefile that just contains a CONUS polygon, you > could use that I suppose. I guess that Jeff suggestion of manipulation a shapefile might be the easiest way to do this, here is an example that might help you. http://www.geophysique.be/en/2011/01/27/matplotlib-basemap-tutorial-07-shapefiles-unleached/ -Filipe > -Jeff > > -- > Jeffrey S. Whitaker Phone : (303)497-6313 > Meteorologist FAX : (303)497-6449 > NOAA/OAR/PSD R/PSD1 Email : Jef...@no... > 325 Broadway Office : Skaggs Research Cntr 1D-113 > Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users >
Hi all, How can I add a printer button to the Navigation toolbar http://matplotlib.sourceforge.net/users/navigation_toolbar.html ? A small example for QT would be awesome. Thanks in advance. Nils
# -*- coding: utf-8 -*- """ Created on Mon Sep 26 20:42:25 2011 http://stackoverflow.com/questions/5089030/how-do-i-create-a-radial-cluster-like-the-following-code-example-in-python colorbar: http://matplotlib.sourceforge.net/api/colorbar_api.html http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.colorbar http://matplotlib.sourceforge.net/examples/api/colorbar_only.html @author: Xiao Jianfeng """ import scipy import pylab import scipy.cluster.hierarchy as sch import scipy.spatial.distance as dist from matplotlib import mpl #def heatmap(x, colside_colors=None, rowside_colors=None): def heatmap(): """ x is a m by n ndarray, m observations, n genes """ x = scipy.rand(20, 30) #x = scipy.loadtxt("f:/learn/heatmap/tst.data") x = x*10 cmap=pylab.cm.YlGnBu norm = mpl.colors.Normalize(vmin=x.min(), vmax=x.max()) fig = pylab.figure(figsize=(8,8)) ## calculate positions for all elements # ax1, dendrogram 1, on the left of the heatmap [ax1_x, ax1_y, ax1_w, ax1_h] = [0.05,0.1,0.2,0.6] width_between_ax1_axr = 0.01 height_between_ax1_axc = 0.01 # axr, row side colorbar [axr_x, axr_y, axr_w, axr_h] = [0.31,0.1,0.02,0.6] axr_x = ax1_x + ax1_w + width_between_ax1_axr axr_y = ax1_y; axr_h = ax1_h width_between_axr_axm = 0.01 # axc, column side colorbar [axc_x, axc_y, axc_w, axc_h] = [0.4,0.63,0.5,0.02] axc_x = axr_x + axr_w + width_between_axr_axm axc_y = ax1_y + ax1_h + height_between_ax1_axc height_between_axc_ax2 = 0.01 # axm, heatmap for the data matrix [axm_x, axm_y, axm_w, axm_h] = [0.4,0.1,0.5,0.5] axm_x = axr_x + axr_w + width_between_axr_axm axm_y = ax1_y; axm_h = ax1_h axm_w = axc_w # ax2, dendrogram 2, on the top of the heatmap [ax2_x, ax2_y, ax2_w, ax2_h] = [0.3,0.72,0.6,0.2] ax2_x = axr_x + axr_w + width_between_axr_axm ax2_y = ax1_y + ax1_h + height_between_ax1_axc + axc_h + height_between_axc_ax2 ax2_w = axc_w # axcb [axcb_x, axcb_y, axcb_w, axcb_h] = [0.10,0.75,0.15,0.1] # Compute and plot left dendrogram. d1 = dist.pdist(x) D1 = dist.squareform(d1) # full matrix # postion = [left(x), bottom(y), width, height] ax1 = fig.add_axes([ax1_x, ax1_y, ax1_w, ax1_h], frame_on=True) # frame_on may be False Y1 = sch.linkage(D1, method='single') #Y = sch.linkage(D1, method='centroid') Z1 = sch.dendrogram(Y1, orientation='right') #ax1.set_xticks([]) #ax1.set_yticks([]) # Plot rowside colors # axr --> axes for row side colorbar axr = fig.add_axes([axr_x, axr_y, axr_w, axr_h]) # axes for column side colorbar dr = scipy.random.randint(low=0, high=5, size=(x.shape[0], 1)) # there are two methods to generate discrete colormap: # matplotlib.cm.get_cmap() and mpl.colros.ListedColormap() #cmap_r = mpl.cm.get_cmap('hot', lut=5) cmap_r = mpl.colors.ListedColormap(['r', 'g', 'b', 'y', 'w']) im_c = axr.pcolor(dr, cmap=cmap_r) axr.set_xticks([]) axr.set_yticks([]) # Compute and plot top dendrogram. d2 = dist.pdist(x.T) D2 = dist.squareform(d2) ax2 = fig.add_axes([ax2_x, ax2_y, ax2_w, ax2_h], frame_on=True) Y2 = sch.linkage(D2, method='single') Z2 = sch.dendrogram(Y2) #ax2.set_xticks([]) #ax2.set_yticks([]) # Plot distance matrix. axm = fig.add_axes([axm_x, axm_y, axm_w, axm_h]) # axes for the data matrix idx1 = Z1['leaves'] idx2 = Z2['leaves'] xt = x[idx1,:] # xt is transformed x xt = xt[:,idx2] im = axm.pcolor(xt, cmap=cmap) axm.set_xticks([]) #fix_verts(ax1,1) #fix_verts(ax2,0) # Add text texts_row = [("%s_" % i)*4 for i in range(x.shape[0])] texts_col = [("%s_" % i)*4 for i in range(x.shape[1])] for i in range(x.shape[0]): axm.text(x.shape[1]+0.5, i, texts_row[idx1[i]]) for i in range(x.shape[1]): axm.text(i, -0.5, texts_col[idx2[i]], rotation=270, verticalalignment="top") # rotation could also be degrees # Plot colside colors # axc --> axes for column side colorbar axc = fig.add_axes([axc_x, axc_y, axc_w, axc_h]) # axes for column side colorbar dc = scipy.random.randint(low=0, high=5, size=(1, x.shape[1])) # there are two methods to generate discrete colormap: # matplotlib.cm.get_cmap() and mpl.colros.ListedColormap() #cmap_c = mpl.cm.get_cmap('hot', lut=5) cmap_c = mpl.colors.ListedColormap(['r', 'g', 'b', 'y', 'w']) im_c = axc.pcolor(dc, cmap=cmap_c) axc.set_yticks([]) # Plot colorbar axcb = fig.add_axes([axcb_x, axcb_y, axcb_w, axcb_h], frame_on=False) # axes for colorbar cb = mpl.colorbar.ColorbarBase(axcb, cmap=cmap, norm=norm, orientation='horizontal') axcb.set_title("colorkey") cb.set_label("add label here") #axcb.set_xticks([]) #axcb.set_yticks([]) pylab.show() #----------------------------------------- if __name__ == '__main__': heatmap()
Dear list, is there an equivalent function to matlabs patch() function in matplotlib? http://dali.feld.cvut.cz/ucebna/matlab/techdoc/ref/patch.html That means a function which does not require its X,Y,Z arguments to come from a prior call to meshgrid? That is at least what I believe to be the requirement for Axes3DSubplot.plot_surface. In matlab you can pass n x k matrices as X,Y,Z argument, which then means that there are n Polygons (each with k vertices) and they each get shaded. The problem with the meshgrid structure is, that an unstructured mesh does not have this tensor structure, so if I have 1000 quadrilaterals, then I would have to call `Axes3DSubplot.plot_surface` for each of them separately. At least with `gtkagg` this even seems to fail with z-buffer problem. Btw. which backend to you recommend for 3D plots? -Holger -- Holger Brandsmeier, SAM, ETH Zürich http://www.sam.math.ethz.ch/people/bholger
Dear Ben, Thank you very much your reply. I understood that there is problem the way plot_wireframe() function requires the data. However, I am trying to understand how exactly it needs the data. For example to understand I took this random input data and did the plot - (I took random points because in some cases it was giving me straight line) X = np.array([[1,2,3], [4, 5, 6]]) Y = np.array([[37,85,19], [120,191,612]]) Z = np.array([[103,140,415], [16,217,718]]) ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10) And it gave me a wireframe 3D graph. However, I have questions regarding this plot - 1. How exactly the function plot_wireframe() interprets and plots the data? How are the co-ordinates determined? I tried to locate the points for example (1,37,103) (2,85,140) and so on... but I don't think it is like that. 2. why does it require multiple dimension If my input data is - X = np.array([1,2,3]) Y = np.array([37,85,19]) Z = np.array([103,140,415]) It gives an error ValueError: need more than 1 value to unpack Can you please tell me about these? :) Thank you very much for your reply. Regards, Raj Benjamin Root-2 wrote: > > On Tue, Sep 27, 2011 at 11:55 AM, rajtendulkar > <pra...@gm...>wrote: > >> Dear Forum, I am a completely new user to matplotlib. I want to plot a 3D >> wireframe / surface plot with matplotlib. I am trying to understand how >> to >> arrange the data so that I will get the correct plot. After trying a lot >> and >> taking reference from different examples, I wrote a code given in the >> file >> temp.py <http://old.nabble.com/file/p32534574/temp.py>. Can anyone please >> tell me, how can I fix it to get a correct wireframe or surface plot? I >> don't understand the array Z how it should look like. Thank You, Raj >> temp.py <http://old.nabble.com/file/p32534574/temp.py> >> > > > I don't think your data is well-formed. The input X, Y, and Z needs to be > 2D with the same shape. I am confused by your x and y data, which you > then > pass into meshgrid. To illustrate, meshgrid does this: > > for: > x = [1, 2, 3, 4, 5] > y = [1, 2, 3] > > then the command: > X, Y = numpy.meshgrid(x, y) > > produces (for X): > array([[1, 2, 3, 4, 5], > [1, 2, 3, 4, 5], > [1, 2, 3, 4, 5]]) > > and (for Y): > array([[1, 1, 1, 1, 1], > [2, 2, 2, 2, 2], > [3, 3, 3, 3, 3]]) > > Your x and y look like they are flattened versions of these. In addition, > your z doesn't seem to have enough values to fit the domain. > > Ben Root > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- View this message in context: http://old.nabble.com/Plotting-in-3D.-how-to-specify-the-data--tp32534574p32551053.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Hello, I have problem to distinguish 10 colours generated with cm.hsv. import matplotlib.cm as cm for row in range(len(data)): bt = plt.bar(range(len(data[row])), data[row], width=width, color=cm.hsv(39*(row)), label=mutations_all[row], bottom=bottom) How is it possible to generate better colours in order to easier distinguish between the data? Thank you in advance.
Stupid mistake, My data array was wrong I had it just to rotate and now it is working. On Thu, Sep 29, 2011 at 2:01 PM, Michal <mic...@gm...> wrote: > Thank you for the links, but I had trouble to get them running with > Matplotlib 1.0.1. However, I downloaded the source code from the Matplotlib > book ( http://www.packtpub.com/support?nid=4110 ) and in chapter 9 is an > example (7900_09_04_cvs.py) with work with csv files. > > I have tried to modify the original code, because my data is stored in > dict. Please find below my problem code: > > import matplotlib.pyplot as plt > import matplotlib.cm as cm > import matplotlib.font_manager as font_manager > > > types = sorted(cul_stat.keys()) #year > print "types = ", types > data_info = {} > > for type in types: > for d in cul_stat[type]['Total'].data_info.keys(): > if d not in data_info: > data_info[d] = 0 > > data_info_all = sorted(data_info.keys()) > print "data_info_all = ", data_info_all #countries > > data = [] > for type in types: > data_amount = [] > for d in data_info_all: > try: > data_amount.append(cul_stat[type]['Total'].data_info[d]) > except KeyError: > data_amount.append(0) > > data.append(data_amount) > print 'data = ',data > > # prepare the bottom array > bottom = np.zeros(len(types)) > print "bottom = ", bottom > width = .8 > # for each line in data > for i in range(len(data)): > # create the bars for each element, on top of the previous bars > print "????", data[i], len(data[i]) > bt = plt.bar(range(len(data[i])), data[i], width=width, > color=cm.hsv(32*(i)), label=data_info_all[i], > bottom=bottom) > # update the bottom array > bottom += data[i] > > # label the X ticks with years > plt.xticks(np.arange(len(types))+width/2, types) > > # some information on the plot > plt.xlabel('Years') > plt.ylabel('Population (in billions)') > plt.title('World Population: 1950 - 2050 (predictions)') > > # draw a legend, with a smaller font > plt.legend(loc='upper left', > prop=font_manager.FontProperties(size=7)) > > plt.subplots_adjust(bottom=0.11, left=0.15) > plt.savefig('7900_09_04.png') > > > Output: > +++++++ > > types = ['d1', 'd2', 'd3', 'd4', 'd5'] > data_info_all = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', > 'x10'] > data = [[484, 1, 2, 1119, 3, 570, 314, 0, 1185, 420], [3236, 6, 4, 8099, > 8, 3833, 2285, 3, 8054, 3170], [1396, 6, 2, 3588, 5, 1450, 1111, 3, 3478, > 1380], [492, 2, 1, 1257, 3, 528, 298, 2, 1240, 506], [21, 0, 0, 44, 1, 20, > 11, 0, 50, 17]] > > bottom = [ 0. 0. 0. 0. 0.] > ???? [484, 1, 2, 1119, 3, 570, 314, 0, 1185, 420] 10 > Traceback (most recent call last): > File "snp_density.py", line 196, in <module> > total_chr_overview(len_ref_seqs, cul_stat, args.chr) > File "snp_density.py", line 143, in total_chr_overview > bottom=bottom) > File > "/home/uqmlore1/apps/pymodules/lib/python2.7/site-packages/matplotlib/pyplot.py", > line 1908, in bar > ret = ax.bar(left, height, width, bottom, **kwargs) > File > "/home/uqmlore1/apps/pymodules/lib/python2.7/site-packages/matplotlib/axes.py", > line 4616, in bar > nbars) > AssertionError: incompatible sizes: argument 'bottom' must be length 10 or > scalar > +++++ > > What did I wrong? > > Thank you in advance. > > > > On Wed, Sep 28, 2011 at 5:13 PM, Klonuo Umom <kl...@gm...> wrote: > >> IMHO, when looking for basics and even more with intent to replicate some >> graph, it's easy to start by looking at matplotlib gallery: >> http://matplotlib.sourceforge.net/gallery.html and find best match. >> >> In you case: >> >> http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html >> http://matplotlib.sourceforge.net/examples/pylab_examples/table_demo.html >> >> for stacked bars, then look at code magic. >> >> I'm new user to matplotlib also, and was looking for easy way to create >> stacked bars some time ago, but unfortunately it's a bit more complicated >> than regular plot 'stuff'. I found gnuplot easier for stacked bars, but than >> as said my experience with matplotlib is basic >> >> >> Cheers >> >> >> On Wed, Sep 28, 2011 at 8:54 AM, Michal <mic...@gm...> wrote: >> >>> Hello, >>> I have found the following histogram example >>> http://gnuplot.sourceforge.net/demo/histograms.4.png >>> >>> which was created with the following gnuplot code: >>> http://gnuplot.sourceforge.net/demo/histograms.4.gnu >>> >>> and with this data set >>> >>> http://212.182.0.171/cgi-bin/dwww/usr/share/doc/gnuplot-doc/examples/immigration.dat >>> >>> How is it possible to do this with Matplotlib? >>> >>> Thank you in advance. >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> All the data continuously generated in your IT infrastructure contains a >>> definitive record of customers, application performance, security >>> threats, fraudulent activity and more. Splunk takes this data and makes >>> sense of it. Business sense. IT sense. Common sense. >>> http://p.sf.net/sfu/splunk-d2dcopy1 >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >>> >>> >> >
Thank you for the links, but I had trouble to get them running with Matplotlib 1.0.1. However, I downloaded the source code from the Matplotlib book ( http://www.packtpub.com/support?nid=4110 ) and in chapter 9 is an example (7900_09_04_cvs.py) with work with csv files. I have tried to modify the original code, because my data is stored in dict. Please find below my problem code: import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib.font_manager as font_manager types = sorted(cul_stat.keys()) #year print "types = ", types data_info = {} for type in types: for d in cul_stat[type]['Total'].data_info.keys(): if d not in data_info: data_info[d] = 0 data_info_all = sorted(data_info.keys()) print "data_info_all = ", data_info_all #countries data = [] for type in types: data_amount = [] for d in data_info_all: try: data_amount.append(cul_stat[type]['Total'].data_info[d]) except KeyError: data_amount.append(0) data.append(data_amount) print 'data = ',data # prepare the bottom array bottom = np.zeros(len(types)) print "bottom = ", bottom width = .8 # for each line in data for i in range(len(data)): # create the bars for each element, on top of the previous bars print "????", data[i], len(data[i]) bt = plt.bar(range(len(data[i])), data[i], width=width, color=cm.hsv(32*(i)), label=data_info_all[i], bottom=bottom) # update the bottom array bottom += data[i] # label the X ticks with years plt.xticks(np.arange(len(types))+width/2, types) # some information on the plot plt.xlabel('Years') plt.ylabel('Population (in billions)') plt.title('World Population: 1950 - 2050 (predictions)') # draw a legend, with a smaller font plt.legend(loc='upper left', prop=font_manager.FontProperties(size=7)) plt.subplots_adjust(bottom=0.11, left=0.15) plt.savefig('7900_09_04.png') Output: +++++++ types = ['d1', 'd2', 'd3', 'd4', 'd5'] data_info_all = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10'] data = [[484, 1, 2, 1119, 3, 570, 314, 0, 1185, 420], [3236, 6, 4, 8099, 8, 3833, 2285, 3, 8054, 3170], [1396, 6, 2, 3588, 5, 1450, 1111, 3, 3478, 1380], [492, 2, 1, 1257, 3, 528, 298, 2, 1240, 506], [21, 0, 0, 44, 1, 20, 11, 0, 50, 17]] bottom = [ 0. 0. 0. 0. 0.] ???? [484, 1, 2, 1119, 3, 570, 314, 0, 1185, 420] 10 Traceback (most recent call last): File "snp_density.py", line 196, in <module> total_chr_overview(len_ref_seqs, cul_stat, args.chr) File "snp_density.py", line 143, in total_chr_overview bottom=bottom) File "/home/uqmlore1/apps/pymodules/lib/python2.7/site-packages/matplotlib/pyplot.py", line 1908, in bar ret = ax.bar(left, height, width, bottom, **kwargs) File "/home/uqmlore1/apps/pymodules/lib/python2.7/site-packages/matplotlib/axes.py", line 4616, in bar nbars) AssertionError: incompatible sizes: argument 'bottom' must be length 10 or scalar +++++ What did I wrong? Thank you in advance. On Wed, Sep 28, 2011 at 5:13 PM, Klonuo Umom <kl...@gm...> wrote: > IMHO, when looking for basics and even more with intent to replicate some > graph, it's easy to start by looking at matplotlib gallery: > http://matplotlib.sourceforge.net/gallery.html and find best match. > > In you case: > > http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html > http://matplotlib.sourceforge.net/examples/pylab_examples/table_demo.html > > for stacked bars, then look at code magic. > > I'm new user to matplotlib also, and was looking for easy way to create > stacked bars some time ago, but unfortunately it's a bit more complicated > than regular plot 'stuff'. I found gnuplot easier for stacked bars, but than > as said my experience with matplotlib is basic > > > Cheers > > > On Wed, Sep 28, 2011 at 8:54 AM, Michal <mic...@gm...> wrote: > >> Hello, >> I have found the following histogram example >> http://gnuplot.sourceforge.net/demo/histograms.4.png >> >> which was created with the following gnuplot code: >> http://gnuplot.sourceforge.net/demo/histograms.4.gnu >> >> and with this data set >> >> http://212.182.0.171/cgi-bin/dwww/usr/share/doc/gnuplot-doc/examples/immigration.dat >> >> How is it possible to do this with Matplotlib? >> >> Thank you in advance. >> >> >> >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense. >> http://p.sf.net/sfu/splunk-d2dcopy1 >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> >
Thanks JJ, `axes_grid1` seems to handle this issue On Wed, Sep 28, 2011 at 4:01 PM, Jae-Joon Lee <lee...@gm...> wrote: > > On Wed, Sep 28, 2011 at 3:32 PM, Klonuo Umom <kl...@gm...> wrote: > > How to deal with this, without manually positioning legends and if possible > > including all annotated plot lines in one legend? > > *twinx* creates a new axes. Thus there are TWO axes, and you need to > do some manual adjustment. I believe that the solution suggested by > Stephen George is essentially the best way, although you may try to > tweak things using the Axes.get_legend_handles_labels method ( > http://matplotlib.sourceforge.net/users/legend_guide.html#what-to-be-displayed > ). > > Alternatively, you can try the axes_grid1 toolkit which automatically > merges legends for you. Check out the example below. > > http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.html#example-1-twinx > > Regards, > > -JJ
Thanks Stephen, but I'm not sure if I follow correctly: I used `twinx()` as I wanted "line 1" to be referenced on left Y-axis and "line 2" on right Y-axis. In your example I can't see what's the purpose of twinx() command? - It presents left Y-axis as default 0 to 1 values not referenced to any plot. On Wed, Sep 28, 2011 at 9:14 AM, Stephen George <ste...@op...>wrote: > On 28/09/2011 4:32 PM, Klonuo Umom wrote: > > Please consider: > > plot([1, 2, 3, 4], label='line 1') > twinx() > plot([11, 12, 11, 14], label='line 2') > legend() > > > will draw only label for 'line 2' > > plot([1, 2, 3, 4], label='line 1') > legend() > twinx() > plot([11, 12, 11, 14], label='line 2') > legend() > > > same result, as it will overwrite label 'line 1' with label 'line 2' > > How to deal with this, without manually positioning legends and if > possible including all annotated plot lines in one legend? > > > Thanks > > > I would do something like > > from matplotlib import pylab > > LegendText = [] > > pylab.twinx() # << had to move before first plot else it blew up > > pylab.plot([1, 2, 3, 4] ) > LegendText.append('line 1') > > pylab.plot([11, 12, 11, 14]) > LegendText.append('line 2') > > pylab.legend( LegendText , loc='lower right') > > pylab.show() > > > Don't know if there is a better way > Steve > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >