2 views
in Python

I need to know, whether it is possible to make the Bland-Altman plot in Python? After a huge effort, I couldn't able to find anything about it.

The alternate name for this plot is Turkey mean-difference plot

For Example:

by (26.4k points)

The following code will provide basic plotting, Ultimately on your needs, you can configure it.

import matplotlib.pyplot as plt

import numpy as np

def bland_altman_plot(data1, data2, *args, **kwargs):

data1     = np.asarray(data1)

data2     = np.asarray(data2)

mean      = np.mean([data1, data2], axis=0)

diff      = data1 - data2                   # Difference between data1 and data2

md        = np.mean(diff)                   # Mean of the difference

sd        = np.std(diff, axis=0)            # Standard deviation of the difference

plt.scatter(mean, diff, *args, **kwargs)

plt.axhline(md,           color='gray', linestyle='--')

plt.axhline(md + 1.96*sd, color='gray', linestyle='--')

plt.axhline(md - 1.96*sd, color='gray', linestyle='--')

In the above code, data1 & data2 are used for calculating the coordinates for the points which are plotted

Also, you can create a plot by executing the following code:

from numpy.random import random

bland_altman_plot(random(10), random(10))

plt.title('Bland-Altman Plot')

plt.show()