如何根据方程绘制图形

时间:2015-12-03 20:04:05

标签: python python-3.x graph

我试图从3个等式中复制一些图形。

我的等式显示在下面的python代码中 前两个方程绘制在第一个图上 第一个等式和第三个等式绘制在第二个图表上 最后两个方程绘制在第三个图上

我的参数是: k1 =一系列值,k2 = 1,n1 = 3,n2 = 3,K1 = 0.3,K2 = 0.3,b1 = 0,b2 = 0.05

我不确定如何在图表上绘制它。任何帮助都会很棒。谢谢 请注意,我是一名python初学者,并具有编码的基本知识

这是我的代码到目前为止:

import numpy as np
import matplotlib.pyplot as plt


rateinact= k1*X

rateact12= k2*(b2*(K2**n2/(K2**n2 + X**n2)) + (X**n2/(K2**n2 + X**n2))*(1-X)

Rateinact2 = k1*(B1*((X**n1)/(K1**n1+X**n1))+((K1**n1)/(K1**n1+X**n1)))*(X)

#define parameters
k1 = []
k2=1
n1=3
n2=3
K1=0.3
K2=0.3
b1=0
b2=0.05
#graph 1
plt.plot(inact, 'r')
plt.plot(act12, 'b')
plt.ylabel('Rate of A inactivation or activation')
plt.xlabel('Fraction of activated A)
plt.show()

1 个答案:

答案 0 :(得分:0)

您似乎缺少的技巧是如何制作一系列值。这可以通过np.linspace轻松完成,因为您已经使用了numpy。

x = np.linspace(0,1,100)
y = x**2 + 3*x + 4
plt.plot(x,y,'g-')

或者,对于您的具体示例,删除了语法错误(我不得不猜测一些值是什么):

- 编辑 -

我现在看到你想要的更好一些。这是一个快速演示如何实现这一点(我使用的是子图而不是单独的图,但想法是一样的):

import numpy as np
import matplotlib.pyplot as plt

k1 = np.linspace(0,1,5)
k2=1
n1=3
n2=3
K1=0.3
K2=0.3
beta1=0
beta2=0.05
x = np.linspace(0,1)
def r_inact_1loop(x,k1=1):
    return k1*x
def r_activation(x,k1=1):
    return k2*(beta2*K2**n2/(K2**n2+x**n2) + x**n2/(K2**n2+x**n2))*(1-x)
def r_inact_2loop(x,k1=1):
    return k1*(beta1*x**n1/(K1**n1+x**n1) + K1**n1/(K1**n1+x**n1))*x
#define parameters

#graph 1
fig = plt.figure(figsize=(16,8))

ax1 = fig.add_subplot(1,3,1)
ax2 = fig.add_subplot(1,3,2)
ax3 = fig.add_subplot(1,3,3)
ax1.set_xlabel('Fraction of activated A')
ax2.set_xlabel('Fraction of activated A')
ax3.set_xlabel('Fraction of activated A')
ax1.set_ylabel('Rate of A inactivation or activation')
ax2.set_ylabel('Rate of A inactivation or activation')
ax3.set_ylabel('Rate of A inactivation or activation')
for k in k1:
    ax1.plot(x,r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k))
    ax1.plot(x,r_activation(x,k),label='ac k1={:.1f}'.format(k))
    ax1.legend(loc='best')
    ax2.plot(x,r_inact_1loop(x,k),label='in1 k1={:.1f}'.format(k))
    ax2.plot(x,r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k))
    ax1.set_xlabel('Fraction of activated A')
    ax2.legend(loc='best')
    ax3.plot(x,r_activation(x,k),label='ac k1={:.1f}'.format(k))
    ax3.plot(x,r_inact_2loop(x,k),label='in2 k1={:.1f}'.format(k))
    ax3.legend(loc='best')
plt.show()

- ADDENDUM -

如果你想看到你所看到的情节的阴影,那么这里有代码

ax2.fill_between(x,r_inact_1loop(x,k1[0]),r_inact_1loop(x,k1[-1]))
ax3.fill_between(x,r_inact_2loop(x,k1[0]),r_inact_2loop(x,k1[-1]))