cnmcferren cnmcferren - 1 month ago 27
Python Question

Change 3D Graph Color (matplotlib)

I have plotted a 3D graph in matplotlib using the following code:

#Previously defines lists of data to plot...
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')

ax.set_axis_bgcolor('black')
ax.xaxis.label.set_color('white')
ax.yaxis.label.set_color('white')
ax.zaxis.label.set_color('white')
ax.tick_params(axis='x',colors='white')
ax.tick_params(axis='y',colors='white')
ax.tick_params(axis='z',colors='white')

ax.scatter(swasp_mag1,swasp_per1,swasp_age1,edgecolor='none',c='r',marker='o',s=35,label='SWASP')
ax.scatter(hyd_mag1,hyd_per1,hyd_age1,edgecolor='none',c='y',marker='o',s=35,label='Hyades')
ax.scatter(pld_mag1,pld_per1,pld_age1,edgecolor='none',c='b',marker='o',s=35,label='Pleiades')

ax.set_xlabel('B-V [mag]')
ax.set_ylabel('Period [days]')
ax.set_zlabel('Age [Myr]')

ax.set_xlim(0.495,1.6)
ax.set_ylim(0,30)
ax.set_zlim(0,600)

ax.legend(scatterpoints=1)
plt.show()


When I run this program I get the following result:
enter image description here

I have changed the background to black and the spines to white (as seen in the image), but I would like to change the color of the planes (the gray area in the image). I have researched but have not found a way to do this. Is there any way I can change the color of the planes in a 3D matplotlib graph?

Answer

See the documentation for Axes3D

The function that you are looking for is called set_pane_color(), it is a member of the axis3d class, so you'd call it as such:

ax.w_xaxis.set_pane_color((R,G,B,A))
ax.w_yaxis.set_pane_color((R,G,B,A))
ax.w_zaxis.set_pane_color((R,G,B,A))

http://matplotlib.org/mpl_toolkits/mplot3d/api.html#mpl_toolkits.mplot3d.axis3d.Axis.set_pane_color