SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

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)

Showing 13 results of 13

From: Holger B. <hol...@sa...> - 2011年09月29日 21:44:52
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
From: Filipe P. A. F. <oc...@gm...> - 2011年09月29日 15:45:11
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
From: Benjamin R. <ben...@ou...> - 2011年09月29日 15:33:59
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
From: Filipe P. A. F. <oc...@gm...> - 2011年09月29日 13:17:28
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
>
From: Nils W. <nw...@ia...> - 2011年09月29日 12:59:41
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
From: <fdu...@gm...> - 2011年09月29日 11:49:52
# -*- 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()
From: Holger B. <hol...@sa...> - 2011年09月29日 09:22:05
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
From: rajtendulkar <pra...@gm...> - 2011年09月29日 07:21:38
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.
From: Michal <mic...@gm...> - 2011年09月29日 07:08:21
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.
From: Michal <mic...@gm...> - 2011年09月29日 06:50:20
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
>>>
>>>
>>
>
From: Michal <mic...@gm...> - 2011年09月29日 04:02:03
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
>>
>>
>
From: Klonuo U. <kl...@gm...> - 2011年09月29日 03:47:35
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
From: Klonuo U. <kl...@gm...> - 2011年09月29日 03:44:42
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
>
>

Showing 13 results of 13

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /