1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 解决python画图中colorbar设置刻度和标签字体大小

解决python画图中colorbar设置刻度和标签字体大小

时间:2022-08-01 10:02:33

相关推荐

解决python画图中colorbar设置刻度和标签字体大小

介绍

python很火,因为有各种库的支持,所以功能格外强大。在可视化方面,目前用得较多的是matplotlib.

在基于matplotlib.pyplot画带色标(colorbar)的图时候,往往为了美观和科研用途,需要对colorbar的Ticks(刻度) ,标签(label)和fonddict(字体进行设置)。但是很多初学者都苦于这些东西的设置,因为太麻烦了(别问我怎么知道的)。以下将介绍有用的方法来解决这些问题。

import matplotlib.pyplot as plt

解决问题

下面将分两种情况来进行介绍

情况1:当colorbar在需要额外指定时(即不能自动生成)。

这种情况最为常见。如 plt.contourf ,plt.imshow, 等。即就是先基于plt.contourf生成图后,再获取该图的句柄,再设置colorbar。画主图和colorbar是两个语句。

还是举个例子吧

List item

import numpy as npimport matplotlib.pyplot as plt#设置一个随机种子,#生成固定数值的随机整数数组seed=np.random.seed(42)data=np.random.randint(0,10,size=(10,10))fig=plt.figure(figsize=(10,8))#这就是所谓的第一种情况哦h=plt.contourf(data)cb=plt.colorbar(h)

生成的图如下所示

List item

我们设置一下主图的横纵坐标的刻度字体大小

plt.xticks(fontsize=16)plt.yticks(fontsize=16)

看,在这种情况下,色标的刻度大小与主图的刻度大小不符合,这是完全不符合一个合格的程序员的审美的。因此需要更改colorbar刻度字体大小。

List item

fig=plt.figure(figsize=(10,8))#这就是所谓的第一种情况哦h=plt.contourf(data)cb=plt.colorbar(h)cb.ax.tick_params(labelsize=16) #设置色标刻度字体大小。plt.xticks(fontsize=16)plt.yticks(fontsize=16)font = {'family' : 'serif','color' : 'darkred','weight' : 'normal','size' : 16,}cb.set_label('colorbar',fontdict=font) #设置colorbar的标签字体及其大小

这个图是不是漂亮多啦

List item

当你想改变colorbar刻度数值大小时,可以采用cb.set_ticks, cb.set_ticklabels

当然你也可以获取其刻度大小,可以用cb.get_ticks。还有cb.get_cmap可以获取颜色属性。

List item

当你需要进行其他操作,如设置颜色,大小限制什么的,可以自己随意上手。

综上,最重要的一句是cb.ax.tick_params(labelsize=16)。其他的属性也可以 用 cb.ax.+table键进行查看。

情况2:当colorbar可以在生成主图时就自动生成时

这种情况在生成热图时较为常见。

可以用seaborn来生成热图(heatmap)

import seaborn as snsimport matplotlib.pyplot as pltimport numpy as npseed=np.random.seed(42)data=np.random.randint(0,10,size=(10,10))fig=plt.figure(figsize=(10,8)) h=sns.heatmap(data, annot=True,fmt='d',linewidths=0.5)

生成图如下:

heatmap的各个参数介绍可见如下链接:

/generated/seaborn.heatmap.html

/sunchengquan/article/details/78573244

/m0_38103546/article/details/79935671

heatmap参数中,默认cbar=True,即默认画出colorbar,其中cbarkws为一个字典, 可以用来设置colorbar的一些属性,包括 thrink, orentation等 。但是我没有找到cbrkws可以设置哪些属性以及怎么设置。

因此这里不利用cbrkws进行colorbar设置。

fig=plt.figure(figsize=(10,8)) h=sns.heatmap(data, annot=True,fmt='d',linewidths=0.5,cbar=False) #设置不使用其默认自带的colorbarcb=h.figure.colorbar(h.collections[0]) #显示colorbarcb.ax.tick_params(labelsize=16) #设置colorbar刻度字体大小。plt.xticks(fontsize=16)plt.yticks(fontsize=16)

其他如标签和刻度范围和色标的操作同第一种情况。

参考链接:

/henkekao/article/details/72864564

/questions/37233108/seaborn-change-font-size-of-the-colorbar

/questions/3489/seaborn-heatmap-colorbar-label-as-percentage

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。