python - 颜色条勾号格式不起作用

标签 python matplotlib

我有以下代码生成带有颜色条的散点图:

#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
from matplotlib.ticker import *
import matplotlib.ticker as ticker
import matplotlib as mpl
import matplotlib.gridspec as gridspec
from list2nparr import list2nparr

# this part changes the fonts for latex handling
plt.rcParams['text.latex.preamble']=[r"\usepackage{lmodern}"]
plt.rcParams['text.usetex'] = True
plt.rcParams['font.family'] = 'lmodern'
plt.rcParams['font.size'] = 16
#==================================================================
fig,ax1 = plt.subplots()
data = list2nparr('radiant.txt')
lm  = data[:,14]
bet = data[:,15]
b   = data[:,18]
#
cm = plt.cm.get_cmap('jet')
sc2 = ax1.scatter(lm, bet, c=b, s=10, cmap=cm, edgecolor='none',rasterized=True)
# ==========================COLORBAR SPECS=========================
cb3 = fig.colorbar(sc2,ax = ax1, aspect=10)
cb3.ax.tick_params(labelsize=16)
cb3.set_label(r'$\beta = F_R/F_G$',size=18,labelpad=20)
cb3.formatter.set_powerlimits((0, 0))
cb3.ax.yaxis.set_major_locator(MaxNLocator(5,prune='upper')) # WHY DOES THIS LINE NOT WORK?
cb3.update_ticks()

# =======================SCATTER PLOT SPECS========================
ax1.set_ylabel('$b$, (deg)',fontsize=18,labelpad=0.5)
ax1.set_xlabel("$\lambda-\lambda_{\odot}$, (deg)",fontsize=18)
plt.savefig('test.eps', format='eps')

在某些时候,我试图格式化颜色条的刻度,在删除最上面的标签时只请求五个刻度。这在第 30 行中进行了说明,其中显示:cb3.ax.yaxis.set_major_locator(MaxNLocator(5,prune='upper'))

不过,这条线好像对剧情一点影响都没有?
任何想法可能是什么原因?

enter image description here

enter image description here

最佳答案

编辑

创建颜色条时使用定位器:

cb3 = fig.colorbar(sc2,ax = ax1, aspect=10, ticks=MaxNLocator(5))

并删除这一行:

cb3.ax.yaxis.set_major_locator(MaxNLocator(5,prune='upper'))

旧答案

翻转这两行的顺序:

cb3.update_ticks()
cb3.ax.yaxis.set_major_locator(MaxNLocator(5,prune='upper'))

你应该只有五个颜色间隔。

或者,根本不使用 set_major_locator 并在创建实例时直接设置刻度:

cb3 = fig.colorbar(sc2,ax = ax1, aspect=10, ticks=[0, 2.5e-4, 5e-4, 7.5e-4, 1e-3 ])

关于python - 颜色条勾号格式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473504/

相关文章:

python - matplotlib:共享轴上的绘图顺序是否应该影响轴限制?

python - 如何在 matplotlib 中使用 Humor Sans?

python - 邻接矩阵没有正确填充python

Python数据库应用框架和工具

python - 如何在不知道行号的情况下将文件读取为以给定单词开头的字符串?

python - 在极坐标的两条线之间填充

python - Matplotlib plot_surface 透明度人工制品

python - 在 python 中杀死标准输出中断 get_line_buffer()

python - 如何在Python中将列表转换为 float

python - 在python matplotlib中调整boxplot中框的宽度