在python子图中更改fontsize

时间:2014-12-14 22:16:29

标签: python matplotlib font-size subplot

我制作了双稳态的相位图,主图上有nulclines,并添加了一个子图,其中轨迹覆盖了它。但是,无论我尝试什么,我似乎都无法将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

2 个答案:

答案 0 :(得分:3)

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

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的方式,并删除了将其添加到图中的调用。 (我还做了另外两个你可能不需要的改动 - 由于某种原因,当我试图展示它时,我的安装不喜欢线宽指令,所以我把它们拿出来 - 看起来有点不对劲我的安装)。

答案 1 :(得分:1)

只需使用

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

BTW好看的情节!

enter image description here