更改 python 子图中的字体大小

Posted

技术标签:

【中文标题】更改 python 子图中的字体大小【英文标题】:Changing fontsize in python subplots 【发布时间】:2015-02-13 00:01:44 【问题描述】:

我已经制作了双稳态稳定器的相位图,主图上有核线,并添加了一个子图,轨迹覆盖它。但是,无论我尝试什么,我似乎都无法将 x 和 y 标签的字体大小增加到 20。

任何帮助将不胜感激。

虽然有类似的问题,但上述问题的答案似乎不适用于这个特定问题。

再次感谢!

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.axislines import SubplotZero
from matplotlib import pylab
from pylab import linspace
from numpy import meshgrid
from numpy import hypot


a1 = 1.0 #(Rate constant)
g1 = 4.0 # Hill number for cdc2
b1 = 200.0 # Rate Constant
k1 = 30.0 #Michaelis Constant
v =1 #coefficient that reflects the strangth of the influence of Wee1 on Cdc2
a2 = 1.0# Rate Constant
g2 = 4.0 #Hill number for Wee1
b2 = 10.0 # Rate Constant
k2 = 1.0# Michaelis constant

# Function for calculating the phase plot
def Function(u,t=0,mu=.1):
    x1 = u[0]
    y1 = u[1]
    dv = (a2* (1.0 - y1) - (b2 * y1 * x1**g2) /(k2 + (x1**g2)))                 # Model of Cdc2
    dx = (a1* (1.0 - x1) - (b1 * x1 * ((v * y1)**g1)) / (k1 + ((v*y1) **g1)))  # Model of Wee1
    return (dx,dv)

t = linspace(0,1,1) #Return list from 0 to 1 in 25 intervals
u0 = np.array([1,1]) # Creates array for odeint function 


mu = [1,10] #call mu for 2
for m in mu:#Get u (differentiation function )
    u = odeint(Function,u0,t,args=(m,))
#   ax.plot(u[0:,0],u[0:,1])
x = linspace(0,1,17) #Creates values for x
y = linspace(0,1,18)#Creates values for y to plot
x,y = meshgrid(x,y)# creates a grid of x by y
X,Y = Function([x,y])# Applies funciton to grid
M = (hypot(X,Y))# Get hypotenuse of X by Y
X,Y = X/M, Y/M# Calculate length(strength) of arrows


#Calculate Nulclines-----------------------------------------------------------

Nulclinevalues = np.arange(0, 1+0.001, 0.001)#Calulate values to set nulcineto
NulclineXX = []# set to an array
NulclineYY = []#set to an array
 # Following 2 formulas show the calculation fo the nullclines
def calcnulclineyy(xx1): 
    oa2 = 1.0#RAte constant
    og2 = 4.0 #Hill number for Wee1
    ob2 = 10.0#Rate constant
    ok2 = 1.0#Michaelis constant
    YY = (oa2*((xx1)**og2) + ok2) / (oa2*((xx1**og2)+ok2)+(ob2*(xx1**og2)))

return YY



def calcnulclinexx(yy1):
    oa1 = 1.0 #Rate constant 
    og1 = 4.0 # Hill number for cdc2 
    ob1 = 200.0 #Rate constant
    ok1 = 30.0#Michaelis constant
    ov = 1##coefficient that reflects the strength of the influence of Wee1 on Cdc2
    og2 = 4.0 #Hill number for Wee1
    XX = (oa1*(ok1+(ov*yy1)**og2)) / (oa1*(ok1+(ov*yy1)**og1)+ob1*(ov*yy1)**og1)

return XX

for YY in Nulclinevalues: 
    # print Y
    NulclineXX.append(calcnulclinexx(YY))

for XX in Nulclinevalues:
    #Print X
    NulclineYY.append(calcnulclineyy(XX))


fig = plt.figure(figsize=(6,6)) # 6x6 image

ax = SubplotZero(fig,111,) #Plot arrows over figure

fig.add_subplot(ax) # Plot arrows over figure

# Plot both nulcines on same graph

plt.axis((0,1,0,1))
ax.set_title('v = 1',fontweight="bold", size=20) # Title
ax.set_ylabel('Active Wee1', fontsize = 20.0) # Y label
ax.set_xlabel('Active Cdc2-cyclin B', fontsize = 20) # X label
plt.plot (NulclineXX,Nulclinevalues, label = " Cdc2 nulcline",c = 'r', linewidth = '2')
plt.plot (Nulclinevalues,NulclineYY, label = "Wee1 nulcline",c = '#FF8C00', linewidth = '2')

ax.quiver(x,y,X,Y,M) # plot quiver plot on graph
ax.grid(True) # Show major ticks    
ax.legend(handletextpad=0,loc='upper right') # Plot legend

plt.show() # Show plot

【问题讨论】:

您可以编辑以修复缩进吗?我不确定所有循环在哪里停止。 他们已经修好了,谢谢! 【参考方案1】:

以下是我对您的代码的最后一点所做的更改:

fig = plt.figure(figsize=(6,6)) # 6x6 image

ax = plt.gca()       #SubplotZero(fig,111,) #Plot arrows over figure

#fig.add_subplot(ax) # Plot arrows over figure

# Plot both nulcines on same graph

plt.axis((0,1,0,1))
ax.set_title('v = 1',fontweight="bold", size=20) # Title
ax.set_ylabel('Active Wee1', fontsize = 20.0) # Y label
ax.set_xlabel('Active Cdc2-cyclin B', fontsize = 20) # X label
plt.plot (NulclineXX,Nulclinevalues, label = " Cdc2 nulcline",c = 'r')
plt.plot (Nulclinevalues,NulclineYY, label = "Wee1 nulcline",c = '#FF8C00')

ax.quiver(x,y,X,Y,M) # plot quiver plot on graph
ax.grid(True) # Show major ticks    
ax.legend(handletextpad=0,loc='upper right') # Plot legend

plt.show() # Show plot

我更改了您定义 ax 的方式,并删除了将其添加到图中的调用。 (我还做了 2 项您可能不需要的其他更改 - 出于某种原因,当我尝试显示它时,我的安装不喜欢线宽说明,所以我将它们取出 - 我的安装看起来有问题)。

【讨论】:

【参考方案2】:

随便用

fig, ax = plt.subplots(figsize=(6,6))

代替:

fig = plt.figure(figsize=(6,6)) # 6x6 image 
ax = SubplotZero(fig,111,) #Plot arrows over figure
fig.add_subplot(ax) # Plot arrows over figure

顺便说一句,剧情不错!

【讨论】:

以上是关于更改 python 子图中的字体大小的主要内容,如果未能解决你的问题,请参考以下文章

在 Matlab 图中更改字体大小

如何更改绘图图中的字体大小[重复]

如何更改 seaborn 联合图中注释的字体大小?

如何使用R中的绘图功能更改散点图中x轴和y轴标签的字体大小和颜色?

更改所有子元素的字体大小和颜色

如何使用 seaborn FacetGrid 更改字体大小?