我制作了双稳态的相位图,主图上有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
答案 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好看的情节!