I\'m trying to get the python tables for a bar plot to be aligned. For example in the attached graph, you\'ll see that x-axis is not properly aligned to the vertical line that i
I think this is what you are looking for.
-added a parameter "spare_width" that makes it so the bar graph is proper.
-resized the legend font and xlabel spacing to look better and not block the data.
-added the "ggplot" style - I like it better.
-increased font size to 35 by moving the frequency (GHz) to it's own line and setting height through bbox.
import csv
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
import matplotlib
def plot_bar(dataset):
matplotlib.rc('font', family='sans-serif')
matplotlib.rc('font', serif='Helvetica Neue')
matplotlib.rc('text', usetex='false')
matplotlib.rcParams.update({'font.size': 30})
fig = plt.figure()
ax = fig.add_subplot(111)
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(30.0,7.5)
N = len(dataset[1])
Load = dataset[0]
QoS = dataset[1]
Energy = dataset[2]
ind = np.arange(N)
width = 0.35
spare_width = (1 - width*2)/2
plt.tick_params(axis='both', which='major', labelsize=35, pad=15)
plt.tick_params(axis='y', which='minor', labelsize=35, pad=15)
rects1 = ax.bar(ind, QoS, width,
color='0.2',
label='HP')
rects3 = ax.bar(ind+width, Energy, width,
color='0.4',
label='OM')
lns = [rects1, rects3]
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, ncol=2, fontsize=30,framealpha=0)
ax.set_xlim(-spare_width,len(ind)-spare_width)
ax.set_ylim(0, 16000)
ax.set_ylabel('RPS/Watt', fontsize=35)
ax.set_xlabel('Percentage of Max Capacity', fontsize=35)
xTickMarks = dataset[0]
ax.set_xticks(ind+width)
xtickNames = ax.set_xticklabels(xTickMarks)
plt.setp(xtickNames, rotation=0, fontsize=40)
plt.xticks([])
ax.yaxis.grid()
cell_text = [['2S\n0.65', '3S\n0.65', '4S\n0.65', '4S\n0.65',
'2B2S\n1.15','2B2S\n1.15', '3B2S\n1.15', '2S\n1.15',
'2S\n1.15', '2S\n1.15', '2S\n1.15','2S\n1.15',
'2S\n1.15', '2S\n1.15', '2S\n1.15', '2S\n1.15'],
['2S\n0.65', '3S\n0.65', '4S\n0.65', '4S\n0.65',
'2S\n1.15', '2S\n1.15', '2S\n1.15', '2S\n1.15',
'2S\n1.15', '2S\n1.15', '2S\n1.15', '2S\n1.15',
'2S\n1.15', '2S\n1.15', '2S\n1.15', '2B\n1.15']]
colors=['0.2','0.4']
rows = ['HP\nGHz','OM\nGHz']
Loc='right'
the_table = plt.table(cellText=cell_text,
rowLabels=rows,
colLabels=Load,
rowColours=colors,
cellLoc='center',
loc='bottom',
bbox=[0,-0.65,1,0.65])#x,y,w,h
the_table.scale(1,2.5)
the_table.auto_set_font_size(False)
the_table.set_fontsize(35)
plt.subplots_adjust(left=0.2, bottom=0.2)
ax.xaxis.labelpad = 260
ax.yaxis.labelpad = 20
fig.savefig('rps-watt' +'.eps',format='eps',bbox_inches='tight', pad_inches=0.1, dpi=1000)
dataset = [['29%', '40%', '51%', '63%', '69%', '71%', '74%', '77%', '80%', '83%', '86%', '89%', '91%', '94%', '97%', '100%'], [6524.0, 8749.0, 10470.0, 13096.0, 13126.0, 12965.0, 13493.0, 13717.0, 14351.0, 14993.0, 15308.0, 14320.0, 13179.0, 9809.0, 10168.0, 10621.0], [6524.0, 8749.0, 10470.0, 13096.0, 6827.0, 5586.0, 7697.0, 8205.0, 8298.0, 8733.0, 8887.0, 9278.0, 9659.0, 9809.0, 10168.0, 10621.0]]
plot_bar(dataset)
This plot created using WinPython-64bit-3.4.4.1Qt5 download here