Hi,

I'm plotting two subplots using bar charts, the first one contains one dataset 
(one bar for each abscissa value), the second 3 dataset (3 bars for each 
abscissa value, each one with its own color). The legend of the multibars chart 
is not correct, it shows the color of the first dataset for all the bars legend.
Note that it works correctly with matplotlib.pyplot.plot instead of 
matplotlib.pyplot.bar.
Any idea to fix it?
Thanks,

A.Frances

CODE OF MULTIBARS
#-------------------------------------------------------------------------------
# Name:        multibars
# Purpose:
#
# Author:      alf
#
# Created:     05-01-2011
# Copyright:   (c) alf 2010
# Licence:     <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python
import matplotlib.pyplot as plt
from numpy import array
import random
strTitle = 'Bars plot - multi data and legend'
x = array(range(10))
y1 = []
y2 = [[],[],[]]
for i in range(len(x)):
    y1.append(1.0 + random.random())
    for j in range(len(y2)):
        y2[j].append(0.5 +  random.random())
lbl_y1 = []
lbl_y1.append('bar 1')
lbl_y2 = 'bar 2'
lbl_type = ['red', 'green', 'blue']
colors_y2 = ([1,0,0],[0,1,0],[0,0,1])
lbls_y2 = []
for i in range(len(lbl_type)):
    lbls_y2.append(lbl_y2 + " " + lbl_type[i])
fig = plt.figure()
ax1=fig.add_subplot(2,1,1)
ax1.set_title("Single data")
plt.bar(x, y1, color='purple', linewidth = 0, align='edge', width = 0.8)
plt.legend(lbl_y1, loc= 0)
plt.xticks(x)
ax2=fig.add_subplot(2,1,2, sharex=ax1)
ax2.set_title("Multi data")
for i in range(len(y2)):
    plt.bar(x+(0.8*float(i)/len(y2)),y2[i],color = colors_y2[i], linewidth=0, 
align='edge', width = (0.8/len(y2)))
plt.legend(lbls_y2, loc=0)
plt.xticks(x)
plt.subplots_adjust(left=0.05, bottom=0.1, right=0.95, top=0.95, wspace=0.1, 
hspace=0.15)
plt.show()
##############################

CODE OF MULTILINES
#-------------------------------------------------------------------------------
# Name:        multilines
# Purpose:
#
# Author:      alf
#
# Created:     05-01-2011
# Copyright:   (c) alf 2010
# Licence:     <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python
import matplotlib.pyplot as plt
from numpy import array
import random
strTitle = 'Lines plot - multi data and legend'
x = array(range(10))
y1 = []
y2 = [[],[],[]]
for i in range(len(x)):
    y1.append(1.0 + random.random())
    for j in range(len(y2)):
        y2[j].append(0.5 +  random.random())
lbl_y1 = []
lbl_y1.append('line 1')
lbl_y2 = 'line 2'
lbl_type = ['red', 'green', 'blue']
colors_y2 = ([1,0,0],[0,1,0],[0,0,1])
lbls_y2 = []
for i in range(len(lbl_type)):
    lbls_y2.append(lbl_y2 + " " + lbl_type[i])
fig = plt.figure()
ax1=fig.add_subplot(2,1,1)
ax1.set_title("Single data")
plt.plot(x, y1, color='purple')
plt.legend(lbl_y1, loc= 0)
plt.xticks(x)
ax2=fig.add_subplot(2,1,2, sharex=ax1)
ax2.set_title("Multi data")
for i in range(len(y2)):
    plt.plot(x,y2[i],color = colors_y2[i])
plt.legend(lbls_y2, loc=0)
plt.xticks(x)
plt.subplots_adjust(left=0.05, bottom=0.1, right=0.95, top=0.95, wspace=0.1, 
hspace=0.15)
plt.show()
##############################
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to