2012-03-12 21 views
9

カラーバーのティックの色を変更する方法と、図のタイトルとカラーバーのフォントの色を変更する方法を知りたかったのです。例えば、物事は明らかにtemp2.​​pngでtemp.pngに表示されていませんが:matplotlib:タイトルとカラーバーのテキストとティックカラーを変更する

import matplotlib.pyplot as plt 
import numpy as np 
from numpy.random import randn 

fig = plt.figure() 
data = np.clip(randn(250,250),-1,1) 
cax = plt.imshow(data, interpolation='nearest') 
plt.title('my random fig') 
plt.colorbar() 

# works fine 
plt.savefig('temp.png') 
# title and colorbar ticks and text hidden 
plt.savefig('temp2.png', facecolor="black", edgecolor="none") 

おかげ

+1

私はこの[古い質問](http://stackoverflow.com/questions/6485000/python-matplotlib-colorbar-settingに探してお勧めしたいです-tick-formator-locator-changes-tick-labels)を指定します。 – cosmosis

答えて

15

これはmatplotlibの中のオブジェクトハンドラのプロパティを検査し、設定することによって行うことができます。

私はあなたのコードを編集し、コメントにいくつかの説明を入れて:前の回答に基づいて

import matplotlib.pyplot as plt 
import numpy as np 
from numpy.random import randn 

fig = plt.figure() 
data = np.clip(randn(250,250),-1,1) 
cax = plt.imshow(data, interpolation='nearest') 

title_obj = plt.title('my random fig') #get the title property handler 
plt.getp(title_obj)     #print out the properties of title 
plt.getp(title_obj, 'text')   #print out the 'text' property for title 
plt.setp(title_obj, color='r')   #set the color of title to red 

axes_obj = plt.getp(cax,'axes')     #get the axes' property handler 
ytl_obj = plt.getp(axes_obj, 'yticklabels')  #get the properties for 
               # yticklabels 
plt.getp(ytl_obj)        #print out a list of properties 
               # for yticklabels 
plt.setp(ytl_obj, color="r")     #set the color of yticks to red 

plt.setp(plt.getp(axes_obj, 'xticklabels'), color='r') #xticklabels: same 

color_bar = plt.colorbar()       #this one is a little bit 
cbytick_obj = plt.getp(color_bar.ax.axes, 'yticklabels')    #tricky 
plt.setp(cbytick_obj, color='r') 

plt.savefig('temp.png') 
plt.savefig('temp2.png', facecolor="black", edgecolor="none") 
+0

@ewyytomato:ありがと...うまくいく – ahmadh

2

は私がカラーバーのボックスの色を設定するために2行を追加し、カラーバーの色ティック:

import matplotlib.pyplot as plt 
import numpy as np 
from numpy.random import randn 

fig = plt.figure() 
data = np.clip(randn(250,250),-1,1) 
cax = plt.imshow(data, interpolation='nearest') 

title_obj = plt.title('my random fig') #get the title property handler 
plt.setp(title_obj, color='w')   #set the color of title to white 

axes_obj = plt.getp(cax,'axes')      #get the axes' property handler 
plt.setp(plt.getp(axes_obj, 'yticklabels'), color='w') #set yticklabels color 
plt.setp(plt.getp(axes_obj, 'xticklabels'), color='w') #set xticklabels color 

color_bar = plt.colorbar()        
plt.setp(plt.getp(color_bar.ax.axes, 'yticklabels'), color='w') # set colorbar 
                   # yticklabels color 
##### two new lines #### 
color_bar.outline.set_color('w')     #set colorbar box color 
color_bar.ax.yaxis.set_tick_params(color='w')  #set colorbar ticks color 
##### two new lines #### 

plt.setp(cbytick_obj, color='r') 
plt.savefig('temp.png') 
plt.savefig('temp3.png', facecolor="black", edgecolor="none") 
4

前の答えを私が欲しかったものを与えなかった。 これは私がそれをやった方法です:

import matplotlib.pyplot as plt 
import numpy as np 
from numpy.random import randn 
data = np.clip(randn(250,250),-1,1) 
data = np.ma.masked_where(data > 0.5, data) 


fig, ax1 = plt.subplots(1,1) 

im = ax1.imshow(data, interpolation='nearest') 
cb = plt.colorbar(im) 

fg_color = 'white' 
bg_color = 'black' 

# IMSHOW  
# set title plus title color 
ax1.set_title('ax1 title', color=fg_color) 

# set figure facecolor 
ax1.patch.set_facecolor(bg_color) 

# set tick and ticklabel color 
im.axes.tick_params(color=fg_color, labelcolor=fg_color) 

# set imshow outline 
for spine in im.axes.spines.values(): 
    spine.set_edgecolor(fg_color)  

# COLORBAR 
# set colorbar label plus label color 
cb.set_label('colorbar label', color=fg_color) 

# set colorbar tick color 
cb.ax.yaxis.set_tick_params(color=fg_color) 

# set colorbar edgecolor 
cb.outline.set_edgecolor(fg_color) 

# set colorbar ticklabels 
plt.setp(plt.getp(cb.ax.axes, 'yticklabels'), color=fg_color) 

fig.patch.set_facecolor(bg_color)  
plt.tight_layout() 
plt.show() 
#plt.savefig('save/to/pic.png', dpi=200, facecolor=bg_color) 

black on white imshow

関連する問題