我刚开始用matplotlib实现rc Parametrization,以便在绘制数据时提高工作效率。
当使用轴刻度的参数时,它会影响我的颜色条刻度尺寸,使其看起来很傻。
我没有包含我所做的计算,只是绘制数据的脚本的一部分。
import matplotlib.pyplot as plt
import numpy as np
#=================================
##### Custom Plot Parameters #####
#=================================
params = {
'backend': 'wxAgg',
'lines.markersize': 2,
'lines.linewidth': 2.5,
'axes.labelsize': 16,
'axes.linewidth': 2.5,
'xtick.major.size': 10,
'xtick.minor.size': 3,
'xtick.major.width': 2.5,
'xtick.minor.width': 1.25,
'ytick.major.size': 10,
'ytick.minor.size': 3,
'ytick.major.width': 2.5,
'ytick.minor.width': 1.25,
'xtick.labelsize': 15,
'ytick.labelsize': 15,
'text.fontsize': 10,
'font.weight': 'heavy',
'text.usetex': True,
'figure.figsize': [9,7],
'legend.fontsize': 15,
'legend.frameon': True,
}
plt.rcParams.update(params)
cmap = plt.get_cmap("Set1", 150)
##### ColorMap #####
cax = plt.scatter(RelDist, RadVel, c=Infall, cmap=cmap, vmin=0.1, vmax=max(Infall))
cbar = plt.colorbar(cax, ticks=[0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0], format=None, shrink=0.7, pad=0.01)
plt.plot(R, nfwEsc08, ':', linewidth=2., color='black', label=r'$ 0.8 \times 10^{12}$')
plt.plot(R, nfwEsc12, '-.', linewidth=2., color='black', label=r'$ 1.2 \times 10^{12}$')
plt.plot(R, nfwEsc20, '--', linewidth=2., color='black', label=r'$ 2.0 \times 10^{12}$')
plt.plot(R, -nfwEsc08, ':', linewidth=2., color='black')
plt.plot(R, -nfwEsc12, '-.', linewidth=2., color='black')
plt.plot(R, -nfwEsc20, '--', linewidth=2., color='black')
plt.xlim(0,1400)
plt.ylim(-450,450)
plt.xlabel('$\mathrm{Galactocentric\ Distance}$ [$\mathrm{kpc}$]')
plt.ylabel('$\mathrm{Radial\ Velocity}$ [$\mathrm{km}\ \mathrm{s}^{-1}$]')
cbar.set_label('$\mathrm{Infall\ Time}$ [$\mathrm{Gyr}$]')
plt.legend()
plt.show()
我一直无法找到涉及彩条的任何内容的matplotlib.rcParams
文档。我是他们的。
如何调整不影响我的绘图轴的刻度尺寸的颜色条的主要刻度尺寸?
-------------编辑---------------
#=================================
##### Custom Plot Parameters #####
#=================================
params = {
'backend': 'wxAgg',
'lines.markersize': 2,
'lines.linewidth': 2.5,
'axes.labelsize': 16,
'axes.linewidth': 2.5,
'xtick.major.size': 10,
'xtick.minor.size': 3,
'xtick.major.width': 2.15,
'xtick.minor.width': 1.25,
'ytick.major.size': 10,
'ytick.minor.size': 3,
'ytick.major.width': 2.15,
'ytick.minor.width': 1.25,
'xtick.labelsize': 15,
'ytick.labelsize': 15,
'text.fontsize': 10,
'font.weight': 'heavy',
'text.usetex': True,
'figure.figsize': [9,7],
'legend.fontsize': 15,
'legend.frameon': True,
}
plt.rcParams.update(params)
x = np.array(np.random.randint(0, 50, 500))
y = x**2
z = y/x
cmap = plt.get_cmap("Set1", 150)
##### ColorMap #####
cax = plt.scatter(x, y, c=z, cmap=cmap, vmin=0.1, vmax=max(z))
cbar = plt.colorbar(cax, format=None, shrink=0.7, pad=0.01)
plt.legend()
plt.show()
问题是主轴的定制也影响了颜色条中的主要刻度,导致大量增厚。
有什么方法可以让某种方式不让颜色栏中的勾号发生,但不知何故让我仍然保留我的情节的改变?
答案 0 :(得分:2)
使用rcParams,您正在编辑即将到来的图的默认值。您需要知道的是,Colormap cbar
有自己的ax
属性,您可以使用cbar.ax
(docs)访问该属性。有了这些知识,您可以在创建后更改特定轴的刻度,同时保留默认值:
[...]
cbar = plt.colorbar(cax, format=None, shrink=0.7, pad=0.01)
cbar.ax.tick_params(labelsize=5, width=2)
答案 1 :(得分:1)
您可以使用此参考调整主要和次要刻度的大小。 https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.tick_params.html 您可以更改长度和宽度 = 大小。例如:
cbar.ax.tick_params(labelsize=40,length=10, width=4, which="major")
这会使我的 colobar 标签更大,并且主要刻度线更长更宽。