【发布时间】:2018-04-12 22:51:48
【问题描述】:
我在 for 循环中生成的绘图上遇到了两件事,我的代码加载了一些数据,使用 curve_fit 将其拟合到函数中,然后在同一绘图上绘制测量数据和拟合 5 个不同测量的 y 值集(测量数据由空圆圈标记表示,并用与标记相同颜色的实线拟合)
首先,我正在努力减少拟合的线宽(实线),但是我减少了线宽的浮点值,我可以增加大小,而不是通过下面输出中显示的值来减小它。其次,我希望图例只显示圆圈标记而不是带有线条的圆圈 - 我似乎无法让它工作,有什么想法吗?
这是我的代码,并附上谷歌驱动器共享链接上的输出图和数据文件(由于某种原因,它切断了这篇文章中的长文本行):
import scipy
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
#define vogel-fulcher-tamman (VFT) function
def vft(x,sigma_0,temp_vf,D):
return np.log(sigma_0)-((D*temp_vf)/(x-temp_vf))
#load and sort data
data=np.genfromtxt('data file',skip_header=3)
temp=data[:,0]
inverse_temp=data[:,1]
dc_conduct=np.log10(data[:,2:11])
only_adam=dc_conduct[:,4:9]
colors = ['b','g','r','c','m']
labels = ['50mg 2-adam','300mg 2-adam','100 mg 2-adam','150 mg 2-adam','250mg
2-adam']
for i in range(0,len(only_adam)):
#fit VTF function
y=only_adam[:,i]
popt, pcov = curve_fit(vft,temp,y)
#plotting
plt.plot(inverse_temp,y,color=colors[i],marker='o',markerfacecolor='none',
label=labels[i])
plt.plot(inverse_temp,vft(temp, *popt),linewidth=0.00001,linestyle='-
',color=colors[i])
plt.ylabel("Ionic Conductivity [Scm**2/mol]")
plt.xlabel("1000 / [T(K)]")
plt.axis('tight')
plt.legend(loc='lower left')
【问题讨论】:
标签: python python-3.x numpy matplotlib scipy