我试图用matplotlib绘制一个两个x轴的图形,它们彼此是非线性的.我想得到的情节是这样的:
基本上,年龄取决于红移.它是非线性的,需要进行计算.我想把年龄和红移作为x轴.我该怎么做?
我想要做的是定义一个包含绘图句子的函数.像这样:
import matplotlib.pyplot as plt
def myfun(args, ax):
#...do some calculation with args
ax.plot(...)
ax.axis(...)
fig.plt.figure()
ax1=fig.add_subplot(121)
ax2=fig.add_subplot(122)
para=[[args1,ax1],[args2,ax2]]
map(myfun, para)
Run Code Online (Sandbox Code Playgroud)
我发现myfun被称为.如果我在myfun中添加plt.show(),它可以在正确的子图中绘图,但在另一个子图中没有任何内容.并且,如果最后添加了plt.show(),则只绘制两对轴.我认为问题是图形没有成功转移到主函数.有可能用python和matplotlib做这样的事情吗?谢谢!
我想作一个没有箭头的箭袋图。我还希望有边框,以便箭头可以从背景色图中突出。这是我的代码试图生成这样的图的主要部分:
plt.quiver(phia[sl1,sl2], R0a[sl1,sl2],u,v, color='white', headlength=0, headwidth = 1, pivot = 'middle', scale = scale, width=width, linewidth = 0.5)
Run Code Online (Sandbox Code Playgroud)
如果这很重要,则图在极轴上。这适用于大多数行,但非常短的行除外。在这些情况下,在线条之后会产生一些来自边界的人造尾巴。我生成的受此影响最大的图之一如下:
任何对此问题的解决方案或绕过它的建议将不胜感激!谢谢!
我试图使用odeint来解决问题.我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
eta=1.24e-9/2
def fun(x):
f=1.05e-8*eta*x**(1.5)*np.exp(13.6/x)
return (np.sqrt(1.+4*f)-1)/2./f
x=np.arange(0,1,0.001)
y=odeint(fun,x,0)[0]
plt.plot(x,y)
plt.plot(x,x)
plt.show()
Run Code Online (Sandbox Code Playgroud)
两条曲线是一样的,这显然是错误的.如果我绘制函数,它看起来像一个阶跃函数,它在0.3之前非常小,并且指数地变为1.你能帮我弄清楚它有什么问题吗?谢谢!