我尝试创建两个极坐标散点图,一个是另一个的放大图。我配置角轴的字体属性没有问题,但我尝试更改径向轴的字体没有成功。
我尝试使用 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() 可以影响径向轴刻度线,但唯一不变的是刻度标签字体。附上生成的图像。
事实上,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()