Issue
I want to Plot V(y axis) vs t(x axis) graph using the below equation at 5 different values of L(shown below)
L= [5,10,15,20,25]
b=0.0032
Equation, (b*V*0.277*t) - (b*L) = log(1+b*V*0.277*t)
code output will be as shown in figure Expected Outcome
Solution
While sympy exposes the plot_implicit
function, the results are far from good. We can use Numpy and Matplotlib to achieve our goal.
The basic idea is that your equation can be written as LHS - RHS = 0
. So, we can create contour plots and select the level 0. But contour plots uses colormaps, so we will have to create solid colormaps:
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.lines import Line2D
from matplotlib.colors import ListedColormap
import numpy as np
Lvalues = [5,10,15,20,25]
bval = 0.0032
V = np.linspace(0, 1000)
t = np.linspace(0, 10)
V, t = np.meshgrid(V, t)
f = lambda V, t, b, L: b*V*0.277*t - b*L - np.log(1+b*V*0.277*t)
colors = cm.tab10.colors
handles = []
fig, ax = plt.subplots()
for L, c in zip(Lvalues, colors):
cmap = ListedColormap([c, c])
z = f(V, t, bval, L)
ax.contour(t, V, z, levels=[0], cmap=cmap)
handles.append(Line2D([], [], color=c, label="L = %s" % L))
ax.legend(handles=handles)
plt.show()
Answered By - Davide_sd
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.