def get_footer(self): footer = GNUPlot.get_footer(self) if len(self.miniplots): averages = [] for key in self.miniplot_key_order: value = self.miniplot_averages[key] averages.append((key, value / len(self.miniplots))) self.add_tiny_barchart(WorldMapPlot.__all_countries_key, averages) footerspecs = [] width = 0.08 height = 0.25 for (country, plotspec) in self.miniplots.items(): if country == WorldMapPlot.__all_countries_key: plot_x = width plot_y = height else: (x, y) = WorldMapPlot.get_centroid(country) plot_x = (x - self.xrange[0]) /\ (self.xrange[1] - self.xrange[0]) plot_y = (y - self.yrange[0]) /\ (self.yrange[1] - self.yrange[0]) # extra plot to show scale if country == WorldMapPlot.__all_countries_key: footerspecs += [ "set title '%d country average' font 'Arial,13'" % (len(self.miniplots) - 1), "set ytics 1", "set size %.2f, %.2f" % (width + 0.02, height + 0.04), ] else: footerspecs += [ "set title ''", "unset ytics", "set size %.2f, %.2f" % (width, height), ] footerspecs += [ "unset border", "set key off", "set yrange [ -2 : 2 ]", # bars have width 0.2, start at -0.2 # -0.3 : 0.5 produces 0.1 left and right margin for 3 bars # TODO make this depend on number of items "set xrange [ -0.3 : 0.5 ]", "set origin %.2f, %.2f" % (plot_x - width / 2, plot_y - height / 2), "plot %s" % plotspec, ] del(self.miniplots[WorldMapPlot.__all_countries_key]) # show scale #footerspecs += [ # "unset border", # "set yzeroaxis lw 1 lc rgb 'black'", # "set ytics 1", # "plot NaN", # ] footer += "\n" + "\n".join(footerspecs) \ + "\n" + "unset multiplot" #print(footer) return footer