How to center Bar- Titel beneath the bars and change bar- colors?

15 Views Asked by At

enter image description here

The Bar- Titles are currently not exactly beneath the bars, but a little bit off to the side.

I don't really understand why, perhaps somebody can help me.

Furthermore, is it possible to change the bar colors for each "overgroup". "Messung 1! is an overgroup for example.

This is the Code:

import matplotlib.pyplot as plt
import numpy as np

font_path = 'Bitsream Charter Font.otf'

# Setze die Schriftart für `matplotlib`
plt.rcParams['font.family'] = 'Charter'
plt.rcParams['font.serif'] = 'Charter'
plt.rcParams['font.sans-serif'] = 'Charter'
plt.rcParams['font.cursive'] = 'Charter'
plt.rcParams['font.monospace'] = 'Charter'

def create_grouped_bar_chart():
    # Daten für die Balken
    groups = 9
    bar_width = 0.08  # Verringere die Balkenbreite
    gap = 0.08  # Verringere das Lückenmaß
    x = np.arange(groups)
    values1 = [3.5, 2, 3, 4, 2.5, 3, 1.5, 2, 1]  # Werte für die ersten 4 Balken
    values2 = [0.5, 1, 0.7, 1.5, 1.2, 1.2, 0.8, 1.3, 0.9]  # Werte für die nächsten 4 Balken
    std_dev1 = [0.2, 0.3, 0.4, 0.2, 0.15, 0.3, 0.25, 0.2, 0.1]  # Standardabweichung für die ersten 4 Balken
    std_dev2 = [0.1, 0.2, 0.3, 0.15, 0.2, 0.25, 0.2, 0.1, 0.12]  # Standardabweichung für die nächsten 4 Balken

    # Set the DPI value for the figure (e.g., 150 or 300)
    dpi = 500

    # Set the font family to Charter
    plt.rcParams['font.family'] = 'Charter'
    
    # Set the font size to 7
    plt.rcParams['font.size'] = 11

    # Größe des Diagramms anpassen
    figsize = (10, 6)  # Beispiel: 10 Zoll Breite, 6 Zoll Höhe

    # Balkendiagramm erstellen
    fig, ax = plt.subplots(figsize=figsize, dpi=dpi)  # Pass the figsize parameter here
    
   # Ersten Balken jeder Gruppe mit Streifen versehen (hatch)
    bar1 = ax.bar(x - bar_width*2 - gap, values1, bar_width, label='Mit IPTG', edgecolor='black', color='lightgreen', yerr=std_dev1, capsize=3)
    bar2 = ax.bar(x - bar_width - gap/2, values2, bar_width, label='Ohne IPTG', hatch='///', edgecolor='black', color='white', yerr=std_dev2, capsize=3)

   # Achsenbeschriftungen
   # Verschiebe die x-Achsenbeschriftung nach unten
    ax.text((x[-1] - x[0]) / 2, -1.7, 'Messungen', ha='center')
    plt.ylabel('Fluoreszenz')

   # Achsenbereiche festlegen
    plt.ylim(0, 6)
    plt.yticks(np.arange(0, 7, 1))

   # X-Achse beschriften
    ax.set_xticks(x)  # Nur die Positionen der Ticks festlegen
    ax.set_xticklabels(['Klon 1', 'Klon 2', 'Klon 3', 'Klon 1', 'Klon 2', 'Klon 3', 'Klon 1', 'Klon 2', 'Klon 3'], ha='center')  # Beschriftungen für die Ticks festlegen und ha='center' für die horizontale Ausrichtung hinzufügen




    # Überschriften für die Gruppen hinzufügen
    ax.text((x[0] + x[2]) / 2, -1, 'Messung 1', ha='center')
    ax.text((x[3] + x[5]) / 2, -1, 'Messung 2', ha='center')
    ax.text((x[6] + x[8]) / 2, -1, 'Messung 3', ha='center')

    # Zusätzliche Überschrift für die Gruppen zusammenfassend hinzufügen
    # ax.text((x[0] + x[5]) / 2, -1.5, 'Zusammengefasste Gruppen', ha='center')

    # Titel und Legende anzeigen
    plt.title('Messungen des Originalkonstrukts nach Retransformation')
    plt.legend()

    # Diagramm anzeigen
    plt.show()

create_grouped_bar_chart()

Thank you very much :)

0

There are 0 best solutions below