I am new to Matplotlib, and as I am learning how to draw box plot in python, I was wondering if there is a way to show mean in the box plots? Below is my code..
from pylab import * import matplotlib.pyplot as plt data1=np.random.rand(100,1) data2=np.random.rand(100,1) data_to_plot=[data1,data2] #Create a figure instance fig = plt.figure(1, figsize=(9, 6)) # Create an axes instance axes = fig.add_subplot(111) # Create the boxplot bp = axes.boxplot(data_to_plot,**showmeans=True**)
Even though I have showmean flag on, it gives me the following error.
TypeError: boxplot() got an unexpected keyword argument 'showmeans'
Sometimes, the mean is also indicated by a dot or a cross on the box plot. The whiskers are the two lines outside the box, that go from the minimum to the lower quartile (the start of the box) and then from the upper quartile (the end of the box) to the maximum.
In order to show mean values in boxplot using ggplot2, we use the stat_summary() function to compute new summary statistics and add them to the plot. We use stat_summary() function with ggplot() function.
This is a minimal example and produces the desired result:
import matplotlib.pyplot as plt import numpy as np data_to_plot = np.random.rand(100,5) fig = plt.figure(1, figsize=(9, 6)) ax = fig.add_subplot(111) bp = ax.boxplot(data_to_plot, showmeans=True) plt.show()
If you want to achieve the same with matplotlib version 1.3.1 you'll have to plot the means manually. This is an example of how to do it:
import matplotlib.pyplot as plt import numpy as np data_to_plot = np.random.rand(100,5) positions = np.arange(5) + 1 fig, ax = plt.subplots(1,2, figsize=(9,4)) # matplotlib > 1.4 bp = ax[0].boxplot(data_to_plot, positions=positions, showmeans=True) ax[0].set_title("Using showmeans") #matpltolib < 1.4 bp = ax[1].boxplot(data_to_plot, positions=positions) means = [np.mean(data) for data in data_to_plot.T] ax[1].plot(positions, means, 'rs') ax[1].set_title("Plotting means manually") plt.show()
Result:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With