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 <klo...@gmail.com> 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 <micta...@gmail.com> 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
>> Matplotlib-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>
>>
>
------------------------------------------------------------------------------
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
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to