python – matplotlib colorbar tick标签格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – matplotlib colorbar tick标签格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3154字,纯文字阅读大概需要5分钟。
内容图文
![python – matplotlib colorbar tick标签格式](/upload/InfoBanner/zyjiaocheng/827/686d757966294733b8d77bca7d9c3f6c.jpg)
我想知道如何在matplotlib中显式设置colorbar对象的格式
以下是绘制脚本的示例:
from matplotlib import pyplot
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
from matplotlib.colors import BoundaryNorm
from matplotlib.ticker import MaxNLocator
from pylab import *
import numpy as np
import random
# ----------
plot_aspect = 1.2
plot_height = 10.0
plot_width = int(plot_height*plot_aspect)
# ----------
pyplot.figure(figsize=(plot_width, plot_height), dpi=100)
pyplot.subplots_adjust(left=0.10, right=1.00, top=0.90, bottom=0.06, hspace=0.30)
subplot1 = pyplot.subplot(111)
# ----------
cbar_max = 40.0
cbar_min = 20.0
cbar_step = 1.0
cbar_num_colors = 200
cbar_num_format = "%d"
# ----------
# make random dataset
dx, dy = 5.0, 5.0
y, x = np.mgrid[slice(-100.0, 100.0 + dy, dy),slice(-100.0, 100.0 + dx, dx)]
z = []
for i in x:
z.append([])
for j in y:
z[-1].append(random.uniform(cbar_min,cbar_max))
# ----------
# make random dataset
levels = MaxNLocator(nbins=cbar_num_colors).tick_values(cbar_min, cbar_max)
cmap = pyplot.get_cmap('gist_ncar')
norm = BoundaryNorm(levels, ncolors=cmap.N, clip=True)
pp = pyplot.contourf(x,y,z,levels=levels,cmap=cmap)
cbar = pyplot.colorbar(pp, orientation='vertical', ticks=np.arange(cbar_min, cbar_max+cbar_step, cbar_step), format=cbar_num_format)
cbar.ax.set_ylabel('Color Scale [unit]', fontsize = 16, weight="bold")
CS = pyplot.contour(x,y,z, alpha=0.5)
majorLocator1 = MultipleLocator(10)
majorFormatter1 = FormatStrFormatter('%d')
minorLocator1 = MultipleLocator(5)
subplot1.xaxis.set_major_locator(majorLocator1)
subplot1.xaxis.set_major_formatter(majorFormatter1)
subplot1.xaxis.set_minor_locator(minorLocator1)
pyplot.xticks(fontsize = 16)
pyplot.xlim(-100.0,100.0)
majorLocator2 = MultipleLocator(10)
majorFormatter2 = FormatStrFormatter('%d')
minorLocator2 = MultipleLocator(5)
subplot1.yaxis.set_major_locator(majorLocator2)
subplot1.yaxis.set_major_formatter(majorFormatter2)
subplot1.yaxis.set_minor_locator(minorLocator2)
pyplot.yticks(fontsize = 16)
pyplot.ylim(-100.0,100.0)
subplot1.xaxis.grid()
subplot1.yaxis.grid()
subplot1.axes.set_aspect('equal')
pyplot.suptitle('Main Title', fontsize = 24, weight="bold")
pyplot.xlabel('X [unit]', fontsize=16, weight="bold")
pyplot.ylabel('Y [unit]', fontsize=16, weight="bold")
pyplot.show()
pyplot.close()
这给了我这样的输出:
目前,colorbar tick标签格式将使用前面提供的格式字符串:cbar_num_format =“%d”,但我还想使用以下方法设置字体大小和重量:
cbar.ax.set_yticklabels(np.arange(cbar_min, cbar_max+cbar_step, cbar_step), fontsize=16, weight='bold')
…但是当我这样做时,先前应用的格式化程序字符串似乎消失了,数字又以“%0.1f”格式返回,而不是我之前应用的“%d”:
如何以更好的方式防止这种情况发生或控制彩条标记?
解决方法:
一种选择是手动格式化ticklabels.可能有更好的方法,但这通常对我有用.
cbar.ax.set_yticklabels(['{:.0f}'.format(x) for x in np.arange(cbar_min, cbar_max+cbar_step, cbar_step)], fontsize=16, weight='bold')
编辑:
如果您不想自己弄清楚滴答,您可以使用:
for l in cbar.ax.yaxis.get_ticklabels():
l.set_weight("bold")
l.set_fontsize(16)
如果没有正确更新,您可能需要调用draw().这可以减少到一个班轮:
setp(cbar.ax.yaxis.get_ticklabels(), weight='bold', fontsize=16)
内容总结
以上是互联网集市为您收集整理的python – matplotlib colorbar tick标签格式全部内容,希望文章能够帮你解决python – matplotlib colorbar tick标签格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。