Chad and Alan, yes that’s the problem. Thanks for responding. “If you like the way the image appears on screen, use the DPI argument to savefig()”
I don’t exactly understand this. What do you mean on screen? This code is integrated with a big project that I’m running inside of ecplise, so I’m not sure what you mean by on screen? Either way, when I add and change a DPI argument to savefig(), it just blows up the dimensions of the PNG. “My question back to you is, why does it matter? Most layout programs will let you set the physical size of the figure and scale the DPI to match.” So you’re saying, fine let it produce a huge png and then shrink it with the html img tag and that will do the job, right? Well, that’s really hard for us to do because we’re using an existing solution and changing that will involve lawyers, I kid you not. So, I can increase the DPI on the savefig call and correspondingly shrink the dimensions of the file in inches to get it to stay the same size, but the problem is the text and the lines, and the axis tick marks don’t shrink too, which is really frustrating. I can then shrink the fonts, but I don’t know how to shrink the tick marks and the lines. Anyways, it really seems like there should be an easier way to increase resolution – not to appear unappreciative in any way of the hard work the devs put into this excellent project! Alan, I read about pixel size in that link you sent me and I have no idea what to do. Perhaps you guys can have a look at my code? Thanks! Bradley from matplotlib.pyplot import figure, cm from numpy import arange # Determine array sizes depending on input data set topOfGradientColor = cm.colors.hex2color('#B5DBEF') bottomOfGradientColor = wht = cm.colors.hex2color('#FFFFFF') blumd = cm.colors.hex2color('#6BC3DE') bludk = cm.colors.hex2color('#6396A5') redmd = cm.colors.hex2color('#F7B27B') reddk = cm.colors.hex2color('#E7754A') gradientColorMap = cm.colors.LinearSegmentedColormap.from_list('gradientColorMap', [bottomOfGradientColor, topOfGradientColor], 256) blugrd = cm.colors.LinearSegmentedColormap.from_list('blugrd',[blumd,bludk],256) blugrd_r = cm.colors.LinearSegmentedColormap.from_list('blugrd_r',[bludk,blumd],256) redgrd = cm.colors.LinearSegmentedColormap.from_list('redgrd',[redmd,reddk],256) redgrd_r = cm.colors.LinearSegmentedColormap.from_list('redgrd_r',[reddk,redmd],256) numYears = len(barChartData) xMin = -0.3 xMax = numYears + 0.3 xLim = (xMin, xMax) paddingFactor = max(abs(yMin), abs(yMax)) * 0.18 yLim = (yMin- paddingFactor, yMax + paddingFactor) fig = figure(figsize = (numYears*0.75, 3.5)) # Determine actual plot area subplot = fig.add_subplot(111, xlim=xLim, ylim=yLim, autoscale_on=False ,axisbg=wht) subplot.imshow([[.7, .7],[.5,.5]], interpolation='bicubic', cmap=gradientColorMap, \ extent=(xMin, xMax, yMin - paddingFactor, yMax + paddingFactor), alpha=1) # Create bars on chart values = [tuple[1] for tuple in barChartData] labels = ["'" + str(tuple[0])[2:] for tuple in barChartData] xArray = arange(numYears) + 0.25 width=0.5 # Create bars and bar labels, adjusting for pos/neg values bottom = 0 X = [[.6, .3],[.6,.3]] for left,top in zip(xArray, values): right = left + width strlab = "{0:.2f}".format(top) + '%' if top >= 0: subplot.imshow(X, interpolation='bicubic', cmap=blugrd, extent=(left, left+(width/2.0)+.01, bottom, top), alpha=1) subplot.imshow(X, interpolation='bicubic', cmap=blugrd_r, extent=(left+(width/2.0), right, bottom, top), alpha=1) subplot.text(left+width/2., top + (paddingFactor/5), strlab, ha='center', va='bottom', fontsize=8, family='serif') else: subplot.imshow(X, interpolation='bicubic', cmap=redgrd, extent=(left, left+(width/2.0)+.01, bottom, top), alpha=1) subplot.imshow(X, interpolation='bicubic', cmap=redgrd_r, extent=(left+(width/2.0), right, bottom, top), alpha=1) subplot.text(left+width/2., top - (paddingFactor/1.5), strlab, ha='center', va='bottom', fontsize=8, family='serif') subplot.set_xticks(xArray + width / 2) #sets x ticks subplot.set_xticklabels(labels, fontsize=8, family='serif') # sets x labels subplot.set_yticks([], minor=True) # minor=True means that it dynamically assigns tick values for lab in subplot.get_yticklabels(): # set_yticks doesn't accept font args, so we manually set them here lab.set_fontsize(8) lab.set_family('serif') subplot.hlines(0, -0.3, numYears + 0.3) # this is the horizontal line set to zero subplot.set_aspect('auto') # really no idea what this does. fig.savefig(fileNameBase + '/barchart.png', bbox_inches='tight', dpi=300) ------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users