首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib:更改标题和颜色栏文本以及刻度颜色

matplotlib:更改标题和颜色栏文本以及刻度颜色
EN

Stack Overflow用户
提问于 2012-03-12 15:10:49
回答 4查看 100.1K关注 0票数 35

我想知道如何更改颜色栏中刻度的颜色,以及如何更改插图中标题和颜色栏的字体颜色。例如,显然在temp.png中可以看到一些东西,但在temp2.png中却看不到:

代码语言:javascript
运行
复制
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")

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-12 19:36:34

这可以通过在matplotlib中检查和设置对象处理程序的属性来完成。

我编辑了你的代码,并在评论中做了一些解释:

代码语言:javascript
运行
复制
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")
票数 36
EN

Stack Overflow用户

发布于 2017-02-03 17:06:25

之前的回答没有给出我想要的。我是这样做的:

代码语言:javascript
运行
复制
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)

票数 32
EN

Stack Overflow用户

发布于 2018-06-08 20:40:42

虽然其他答案肯定是正确的,但使用样式或特定的rcParams或使用tick_params函数似乎更容易解决这个问题

样式

Matplotlib提供了一种dark_background样式。你可以使用它,例如通过plt.style.use("dark_background")

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np

plt.style.use("dark_background")

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

plt.savefig('temp2.png', facecolor="black", edgecolor="none")
plt.show()

或者,如果您需要创建具有和不具有黑色背景的相同图形,则可以在上下文中使用样式。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np

def create_plot():
    fig = plt.figure()
    data = np.clip(np.random.randn(150,150),-1,1)
    plt.imshow(data)
    plt.title('my random fig')
    plt.colorbar()
    return fig

# create white background plot
create_plot()
plt.savefig('white_bg.png')

with plt.style.context("dark_background"):
    create_plot()
    plt.savefig('dark_bg.png', facecolor="black", edgecolor="none")

Customizing matplotlib教程中阅读更多关于这方面的内容。

特定rcParams

您可以在脚本中需要的地方单独设置组成样式所需的rcParams

例如,要使任何文本变为蓝色或红色,请执行以下操作:

代码语言:javascript
运行
复制
params = {"text.color" : "blue",
          "xtick.color" : "crimson",
          "ytick.color" : "crimson"}
plt.rcParams.update(params)

这将自动为刻度线着色。

自定义记号和标签

也可以单独自定义打印中的对象。对于刻度和刻度标签,有一个tick_params方法。例如仅使色条的刻度变为红色,

代码语言:javascript
运行
复制
cbar = plt.colorbar()
cbar.ax.tick_params(color="red", width=5, length=10)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9662995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档