自定义极坐标等高线图轴样式
Customise polar contour plot axes style
我正在使用 GridSpec 在 matplotlib 中创建极坐标等高线图网格。为了帮助视觉效果,我正在尝试自定义等高线图的外观。以这个单极坐标图为例(下面的 MWE)
我有两个格式问题:
如何自定义 r 轴以仅显示 0、20、40 和 60 值?我怎样才能让这些数字也显示为白色?
绘制多个极坐标图时,我选择使用 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
我正在使用 GridSpec 在 matplotlib 中创建极坐标等高线图网格。为了帮助视觉效果,我正在尝试自定义等高线图的外观。以这个单极坐标图为例(下面的 MWE)
我有两个格式问题:
如何自定义 r 轴以仅显示 0、20、40 和 60 值?我怎样才能让这些数字也显示为白色?
绘制多个极坐标图时,我选择使用
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