Histograms

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.

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 <mictadlo@…287…> 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

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

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 <klonuo@…287…> 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 <mictadlo@…287…> 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

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 <mictadlo@…287…> 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

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 <klonuo@…287…> 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 <mictadlo@…287…> 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