python - 尝试获得具有不同 X 轴的多个图
问题描述
我需要得到这样的东西:
但我知道我知道我必须为情节的每次提供单独的时间,但我不知道如何。我的情节也有问题,我认为它情节不止一个,而且它们彼此重叠。
更新:
在@Zephyr 的帮助下,现在看起来像这样:
但它应该是这样的:
这是代码:
import mpmath as mp
import numpy as np
import sympy
beta = 0.25;
L=[0.04980905361573844, 0.0208207352451072, 0.012368753716465475, 0.009117292529338674, 0.007461219338976698, 0.006510364609693688, 0.005899506135250773, 0.005485130537183343, 0.0051898472561455, 0.004961157595209418, 0.004778617403698715, 0.00463084459959999, 0.004510113095117956, 0.004410195593051274, 0.004330450690278247]
Lc=[1.7509008762765992, 0.14986486457338544, 0.03453912303580302, 0.014622269851256788, 0.00831141421008418, 0.005660123321843252, 0.004287823173522503, 0.0034922189865254395, 0.0029879534061896186, 0.0026315863522143363, 0.002367747989524076, 0.0021671535838986545, 0.0020116727106455415, 0.0018885896058416002, 0.0017939246597491803]
for k0 in [0.052,0.12,0.252,0.464,0.792,1.264,1.928,2.824,4,5.600,7.795,10.806,14.928,20.599,28.000]:
t=np.linspace(k0,30,50)
for i in range(len(L)):
j0 = L[i];
j1 = Lc[i];
G = []
def f(s):
return s**(beta - 1)/(j0*s**beta + j1*sympy.gamma(beta + 1))
for j in range(len(t)):
G.append(mp.invertlaplace(f, t[j], method = 'dehoog', dps = 10, degree = 50))
plt.plot(t,G)
答案应该是这样的,但我得到了这个错误
import numpy as np
import sympy
beta = 0.25;
L=[0.04980905361573844, 0.0208207352451072, 0.012368753716465475, 0.009117292529338674, 0.007461219338976698, 0.006510364609693688, 0.005899506135250773, 0.005485130537183343, 0.0051898472561455, 0.004961157595209418, 0.004778617403698715, 0.00463084459959999, 0.004510113095117956, 0.004410195593051274, 0.004330450690278247]
Lc=[1.7509008762765992, 0.14986486457338544, 0.03453912303580302, 0.014622269851256788, 0.00831141421008418, 0.005660123321843252, 0.004287823173522503, 0.0034922189865254395, 0.0029879534061896186, 0.0026315863522143363, 0.002367747989524076, 0.0021671535838986545, 0.0020116727106455415, 0.0018885896058416002, 0.0017939246597491803]
for k0 in [0.052,0.12,0.252,0.464,0.792,1.264,1.928,2.824,4,5.600,7.795,10.806,14.928,20.599,28.000]:
t[k0]=np.linspace(k0,30,50)
for i in range(len(L)):
j0 = L[i];
j1 = Lc[i];
G = []
def f(s):
return s**(beta - 1)/(j0*s**beta + j1*sympy.gamma(beta + 1))
for j in range(len(t[k0])):
G.append(mp.invertlaplace(f, t[k0][j], method = 'dehoog', dps = 10, degree = 50))
plt.plot(t[k0],G)
虚线的作用是:
31.9279939766313*exp(-0.18*sympy.sqrt(7)/sympy.sqrt(t))
解决方案
你循环的次数太多了,这就是你绘制多条线重叠的原因。
您应该以这种方式重新构造您的代码:
import mpmath as mp
import numpy as np
import sympy
import matplotlib.pyplot as plt
beta = 0.25
L = [0.04980905361573844, 0.0208207352451072, 0.012368753716465475, 0.009117292529338674, 0.007461219338976698, 0.006510364609693688, 0.005899506135250773, 0.005485130537183343, 0.0051898472561455, 0.004961157595209418, 0.004778617403698715, 0.00463084459959999, 0.004510113095117956, 0.004410195593051274, 0.004330450690278247]
Lc = [1.7509008762765992, 0.14986486457338544, 0.03453912303580302, 0.014622269851256788, 0.00831141421008418, 0.005660123321843252, 0.004287823173522503, 0.0034922189865254395, 0.0029879534061896186, 0.0026315863522143363, 0.002367747989524076, 0.0021671535838986545, 0.0020116727106455415, 0.0018885896058416002, 0.0017939246597491803]
K = [0.052, 0.12, 0.252, 0.464, 0.792, 1.264, 1.928, 2.824, 4, 5.600, 7.795, 10.806, 14.928, 20.599, 28.000]
def f(s):
return s**(beta - 1)/(j0*s**beta + j1*sympy.gamma(beta + 1))
for k0, j0, j1 in zip(K, L, Lc):
t = np.linspace(k0, 30, 50)
G = []
for j in range(len(t)):
G.append(mp.invertlaplace(f, t[j], method = 'dehoog', dps = 10, degree = 50))
plt.plot(t, G)
plt.show()
感谢zip
您可以遍历和列表K
,同时从每个列表中选择一个元素;不需要和柜台。L
Lc
i
j
推荐阅读
- python - 检测和打印条纹
- javascript - Javascript中的问号是什么?
- java - 验证和订购阈值列表,如俄罗斯娃娃
- windows - 是否有相当于 Windows“调用”命令的 macOS?
- r - 如何从 R 中的 h2o 模型绘制 AUCPR 曲线?
- ionic-framework - 如何修复 UIWebView 已弃用的 Ionic 4
- tcl - 在 Tcl 中使用字符串递增数组时如何修复预期的整数错误
- sql - 如何在 SQL Server 中获取具有相同产品和品牌的所有包?
- php - 针对特定用户禁用 WooCommerce 特定产品
- c - 为什么 C 标准不公开获取 malloc 块大小的函数?