Custom Styles ============= pygal provides 2 ways to customize styles: Using Style class ----------------- You can instantiate the ``Style`` class with some customizations for quick styling: .. pygal-code:: from pygal.style import Style custom_style = Style( background='transparent', plot_background='transparent', foreground='#53E89B', foreground_strong='#53A0E8', foreground_subtle='#630C0D', opacity='.6', opacity_hover='.9', transition='400ms ease-in', colors=('#E853A0', '#E8537A', '#E95355', '#E87653', '#E89B53')) chart = pygal.StackedLine(fill=True, interpolate='cubic', style=custom_style) chart.add('A', [1, 3, 5, 16, 13, 3, 7]) chart.add('B', [5, 2, 3, 2, 5, 7, 17]) chart.add('C', [6, 10, 9, 7, 3, 1, 0]) chart.add('D', [2, 3, 5, 9, 12, 9, 5]) chart.add('E', [7, 4, 2, 1, 2, 10, 0]) Properties ~~~~~~~~~~ Style objects supports the following properties: ================================ ========================= Properties Description ================================ ========================= ``plot_background`` The color of the chart area background ``background`` The color of the image background ``foreground`` The main foregrond color ``foreground_strong`` The emphasis foreground color ``foreground_subtle`` The subtle foreground color ``font_family`` The main font family ``label_font_family`` The label font family ``major_label_font_family`` The major label font family ``value_font_family`` The ``print_value`` font family ``tooltip_font_family`` The tooltip font family ``title_font_family`` The title font family ``legend_font_family`` The legend font family ``no_data_font_family`` The no data text font family ``guide_stroke_dasharray`` The dasharray for guide line ``major_guide_stroke_dasharray`` The dasharray for guide line ``label_font_size`` The label font size ``major_label_font_size`` The major label font size ``value_font_size`` The ``print_value`` font size ``tooltip_font_size`` The tooltip font size ``title_font_size`` The title font size ``legend_font_size`` The legend font size ``no_data_font_size`` The no data font size ``opacity`` The opacity of chart element ``opacity_hover`` The opacity of chart element on mouse hover ``transition`` Define the global transition property for animation ``colors`` The serie color list ``value_colors`` The ``print_value`` color list ================================ ========================= Google font ~~~~~~~~~~~ It is possible to give a google font to any font family property by specifying the ``googlefont:`` prefix: .. code-block:: python style = Style(font_family='googlefont:Raleway') Using a custom css ------------------ You can also specify a file containing a custom css for more customization. The css option is an array containing included css by default (except from ``base.css`` which is always included). It supports local file names and external stylesheet too, just append your URI in the list. (See the `default css `_) NB: Now the css rules are prefixed by an unique id, to prevent collisions when including several svg directly into a web page. You can disable it with the ``no_prefix`` option. .. pygal-code:: from tempfile import NamedTemporaryFile custom_css = ''' {{ id }}text { fill: green; font-family: monospace; } {{ id }}.legends .legend text { font-size: {{ font_sizes.legend }}; } {{ id }}.axis { stroke: #666; } {{ id }}.axis text { font-size: {{ font_sizes.label }}; font-family: sans; stroke: none; } {{ id }}.axis.y text { text-anchor: end; } {{ id }}#tooltip text { font-size: {{ font_sizes.tooltip }}; } {{ id }}.dot { fill: yellow; } {{ id }}.color-0 { stroke: #ff1100; fill: #ff1100; } {{ id }}.color-1 { stroke: #ffee00; fill: #ffee00; } {{ id }}.color-2 { stroke: #66bb44; fill: #66bb44; } {{ id }}.color-3 { stroke: #88bbdd; fill: #88bbdd; } {{ id }}.color-4 { stroke: #0000ff; fill: #0000ff; } ''' custom_css_file = '/tmp/pygal_custom_style.css' with open(custom_css_file, 'w') as f: f.write(custom_css) config = pygal.Config(fill=True, interpolate='cubic') config.css.append(custom_css_file) chart = pygal.StackedLine(config) chart.add('A', [1, 3, 5, 16, 13, 3, 7]) chart.add('B', [5, 2, 3, 2, 5, 7, 17]) chart.add('C', [6, 10, 9, 7, 3, 1, 0]) chart.add('D', [2, 3, 5, 9, 12, 9, 5]) chart.add('E', [7, 4, 2, 1, 2, 10, 0])