更改 matplotlib 极坐标图径向轴标签字体

问题描述 投票:0回答:1

我尝试创建两个极坐标散点图,一个是另一个的放大图。我配置角轴的字体属性没有问题,但我尝试更改径向轴的字体没有成功。

我尝试使用 font_manager 来定义字体:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties

#define font
baseFont = FontProperties(family='Helvetica',fname=[path to the .ttf file])

a = np.random.uniform(-np.pi/2,np.pi/2,100)
d = np.random.uniform(0,20,100)
c = np.random.uniform(0,1,100)

fig, sub = plt.subplots(1,2,subplot_kw={'polar':[True,True]})

#configure the ticks
aTicks = np.linspace(-np.pi/2,np.pi/2,7,endpoint=True)
aLabels = np.linspace(-90,90,7,endpoint=True)
dTicks1 = np.arange(0,20.1,5)
dTicks2 = np.arange(0,5.1,1)

#plot the first graph
sub[0].scatter(a,d,c=c,cmap='hsv')

sub[0].set_thetamin(-90)
sub[0].set_thetamax(90)
sub[0].set_ylim(0,20.1)
sub[0].set_xticks(aTicks,labels=aLabels,font=baseFont,fontsize=12)
sub[0].set_yticks(dTicks1,labels=dTicks1,font=baseFont,fontsize=12)

sub[1].scatter(a,d,c=c,cmap='hsv')

sub[1].set_thetamin(-90)
sub[1].set_thetamax(90)
sub[1].set_ylim(0,5.1)
sub[1].set_xticks(aTicks,labels=aLabels,font=baseFont,fontsize=12)
sub[1].set_yticks(dTicks2,labels=dTicks2,font=baseFont,fontsize=12)

plt.show()

角轴刻度字体更改为 Helvetica,而径向轴刻度字体保持默认字体。

我还尝试更改刻度密度并确认 sub[0].set_yticks() 可以影响径向轴刻度线,但唯一不变的是刻度标签字体。附上生成的图像。

绘图结果

python matplotlib polar-plot
1个回答
0
投票

事实上,matplotlib 中的 set_xticks 和 set_yticks 方法没有字体参数,因此您所做的操作不会影响刻度的字体。要更改径向轴的字体属性,您应该使用tick_params方法。

尝试:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties

#define font
baseFont = FontProperties(family='Helvetica', fname=[path to the .ttf file])

a = np.random.uniform(-np.pi/2,np.pi/2,100)
d = np.random.uniform(0,20,100)
c = np.random.uniform(0,1,100)

fig, sub = plt.subplots(1,2,subplot_kw={'polar':[True,True]})

#configure the ticks
aTicks = np.linspace(-np.pi/2,np.pi/2,7,endpoint=True)
aLabels = np.linspace(-90,90,7,endpoint=True)
dTicks1 = np.arange(0,20.1,5)
dTicks2 = np.arange(0,5.1,1)

#plot the first graph
sub[0].scatter(a,d,c=c,cmap='hsv')

sub[0].set_thetamin(-90)
sub[0].set_thetamax(90)
sub[0].set_ylim(0,20.1)
sub[0].set_xticks(aTicks)
sub[0].set_yticks(dTicks1)
sub[0].set_xticklabels(aLabels, fontproperties=baseFont, fontsize=12)
sub[0].set_yticklabels(dTicks1, fontproperties=baseFont, fontsize=12)

sub[1].scatter(a,d,c=c,cmap='hsv')

sub[1].set_thetamin(-90)
sub[1].set_thetamax(90)
sub[1].set_ylim(0,5.1)
sub[1].set_xticks(aTicks)
sub[1].set_yticks(dTicks2)
sub[1].set_xticklabels(aLabels, fontproperties=baseFont, fontsize=12)
sub[1].set_yticklabels(dTicks2, fontproperties=baseFont, fontsize=12)

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.