Exemple #1
0
    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