2017-08-03 104 views
0

因此,通过此代码,我需要绘制一条IV曲线呈指数衰减的曲线,但方向错误,需要镜像/翻转。 x和y值没有绘制在正确的轴上,需要切换。在给定电压的情况下,它将显示与当前呈指数下降的关系。我尝试过各种调试,但它一直呈指数级增长或相同类型的衰减。python剧情问题

import matplotlib.pyplot as plt 
import numpy as np 
xdata=np.linspace(23,0)# voltage data 
ydata=np.exp(xdata)# current data 
plt.plot(ydata,xdata) 
plt.title(r'IV-curve') 
plt.xlabel('Voltage(V)') 
plt.ylabel('Current(I)') 
plt.show() 

这里是什么样子:http://imgur.com/a/NJf3g

此外,忍耐一下,因为这似乎是一个微不足道的代码,但我真的开始编码上周的第一次,所以我会得到一些颠簸道路:)上

+0

我刚刚发布了一个答案。让我知道如果这是你想要的 – sera

+0

@sera我试过你的代码,但它说排序没有定义 – user8173426

+0

我编辑了我的代码。使用ydata = np.sort(ydata) – sera

回答

0

看起来也许

plt.plot(ydata,xdata) 

应该

plt.plot(xdata,ydata) 

这将更正坐标轴。但是你仍然不会有衰败的指数。为什么?不是因为绘图而是因为你的数据。您的数据呈指数级增长。如果你想衰减使用类似

ydata=np.exp(-xdata) 

即在xdata前减号。

+0

时,请让我知道这些轴是否正确。问题是ydata。 – sera

1

问题是您使用的ydata未正确排序。

解决方案很简单。重新订购ydata

这样做:

import matplotlib.pyplot as plt 
import numpy as np 

xdata = np.linspace(23,0)# voltage data 
ydata = np.exp(xdata)# current data 
ydata = np.sort(ydata) 

plt.plot(ydata,xdata) 
plt.title(r'IV-curve') 
plt.xlabel('Voltage(V)') 
plt.ylabel('Current(I)') 

plt.show() 

结果:

enter image description here