4

How do I change the background color of a scatter plot in matplotlib?

Currently I have

import matplotlib.pyplot as plt
plt.scatter(X, Y, c=T, marker='o', s=(0.005*r), linewidth=0, cmap=cm.coolwarm)
plt.scatter(X_stars, Y_stars, marker='o', s=(0.00000005*r), color='white')

plt.savefig(filename, format='ps')

I want the background to be black, not white. I already changed facecolor and edgecolor to black, but without the desired effect. Setting transparent=True made it transparent so that I could change the background in Photoshop, but it must work in matplotlib as I have a very large number of plots.

Sg1team
  • 155
  • 1
  • 2
  • 11
  • If you want to use the [state-machine interface](http://matplotlib.org/faq/usage_faq.html#matplotlib-pylab-and-pyplot-how-are-they-related), you can add `plt.gca().set_axis_bgcolor('black')` after the calls to `plt.scatter` – sodd Aug 02 '13 at 09:28

1 Answers1

9

EDIT: As mentionned by endolith in the comments axisbg was deprecated in version 2.0 of matplotlib. Use facecolor instead.

ax = fig.add_subplot(111, facecolor='black')

You could use the axisbg argument of the add_subplot method. Here's a little example:

import matplotlib.pyplot as plt

a = random(100)*10
b = range(100)
fig = plt.figure(1)
ax = fig.add_subplot(111, axisbg='black')
ax.scatter(a,b)
fig.canvas.draw()
bserra
  • 520
  • 4
  • 13