This variation of lollipop chart is really useful if you have 2 observations for each groups.
Instead of displaying the values of both groups one beside each other, show them on the same line and represent only their difference!
# libraries import pandas as pd import matplotlib.pyplot as plt # Create a dataframe value1=np.random.uniform(size=20) value2=value1+np.random.uniform(size=20)/4 df = pd.DataFrame({'group':list(map(chr, range(65, 85))), 'value1':value1 , 'value2':value2 }) # Reorder it following the values of the first value: ordered_df = df.sort_values(by='value1') my_range=range(1,len(df.index)+1) # The vertical plot is made using the hline function # I load the seaborn library only to benefit the nice looking feature import seaborn as sns plt.hlines(y=my_range, xmin=ordered_df['value1'], xmax=ordered_df['value2'], color='grey', alpha=0.4) plt.scatter(ordered_df['value1'], my_range, color='skyblue', alpha=1, label='value1') plt.scatter(ordered_df['value2'], my_range, color='green', alpha=0.4 , label='value2') plt.legend() # Add title and axis names plt.yticks(my_range, ordered_df['group']) plt.title("Comparison of the value 1 and the value 2", loc='left') plt.xlabel('Value of the variables') plt.ylabel('Group')
Great! Thank you for share