plt.boxplot showing up blank despite thousands of varying datapoints

Viewed 3760

I have a numpy 1D array of around 7000 in length. Here is a snippet: .2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 1.2 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.4 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9 1.9

When I graph the boxplot it comes up blank. When I change it to a pandas DF it graphs appropriately, however for the rest of my code to work I need to graph it with either pylab or pyplot.

Here is my code:

plt.figure(1) plt.boxplot(array) plt.savefig('test.png')

Here is what it looks like: enter image description here

If i plot it using plt.plot(array) I get: enter image description here

Thank you

3 Answers

I had the same issue, which was caused by Nans in the data. Check if you have removed all the null values.

I had the same error. The first step is to check if you have any NaN values. A quick way to do that is to run:

import numpy as np
if np.isnan(your_array).any():
  print("There are NaN values, I need to remove")

Once you have checked for NaN values, you might find that you still see the blank plot. I found that a way to go around this was to plot directly onto the axis. You can do that using:

fig1, ax1 = plt.subplots()
ax1.set_title('Basic Plot')
ax1.boxplot(your_array)
plt.show()

The following code

import numpy as np
import matplotlib.pyplot as plt

array = np.array([.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9, 1.9])

plt.figure(1)
plt.boxplot(array)
plt.show()

produces this image:

enter image description here

Related