自定义极坐标等高线图轴样式

Customise polar contour plot axes style

我正在使用 GridSpec 在 matplotlib 中创建极坐标等高线图网格。为了帮助视觉效果,我正在尝试自定义等高线图的外观。以这个单极坐标图为例(下面的 MWE)

我有两个格式问题:

  1. 如何自定义 r 轴以仅显示 0、20、40 和 60 值?我怎样才能让这些数字也显示为白色?

  2. 绘制多个极坐标图时,我选择使用 ax.grid(False)ax.set_xticklabels([])ax.set_yticklabels([]) 删除另一个轴和刻度。然而,沿着 theta = 0 的白色条仍然存在,我想将其删除。将此图像作为我的意思的示例:

MWE

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec

gs=gridspec.GridSpec(1,1)
gs.update(wspace=0.205, hspace=0.105) 
fig=plt.figure(figsize=(500/72.27,450/72.27))

X = np.arange(0, 70, 10)
Y = np.radians(np.linspace(0, 360, 20))
r, theta = np.meshgrid(X,Y)
Z1 = np.random.random((Y.size, X.size))


ax=fig.add_subplot(gs[0,0], projection='polar')
cax=ax.contourf(theta, r, Z1, 10)
plt.show()

对于您的第一个问题,也只需使用 rticks from matplotlib (check out the demo

ax.set_rticks([0,20,40,60])
ax.tick_params(colors='white', axis="y", which='both') 

完整代码:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec

gs=gridspec.GridSpec(1,1)
gs.update(wspace=0.205, hspace=0.105) 
fig=plt.figure(figsize=(500/72.27,450/72.27))

X = np.arange(0, 70, 10)
Y = np.radians(np.linspace(0, 360, 20))
r, theta = np.meshgrid(X,Y)
Z1 = np.random.random((Y.size, X.size))


ax=fig.add_subplot(gs[0,0], projection='polar')
cax=ax.contourf(theta, r, Z1, 10)

ax.set_rticks([0,20,40,60])
ax.tick_params(colors='white', axis="y", which='both') 
plt.show()

更新: 要使用不同颜色的刻度线,请使用我在评论中提到的内容:

colors = ['r', 'white', 'white', 'r']
for ytick, color in zip(ax.get_yticklabels(), colors):
    ytick.set_color(color)

来源:matplotlib different colors for each axis label, Set color for xticklabels individually in matplotlib