在将任意数量的参数传递给plt.plot()
时,我遇到了一些问题。对于每个参数,我尝试通过*args
传递,我的函数调用plt.plot()
两次,为每个可选参数创建副本。read_n_plot
函数的目的是读取一些数据文件,将数据显示为列表,并创建一个所述数据的图。如果我想为一个晶体创建一个XRD标准图,我想让它很容易地与我正在比较的任何实验数据区分开来。
据我所知,*args
是一个元组,包含传递给我函数的所有参数。但我似乎想不出如何在*args内部传递所有内容,而不是调用plt.plot(arg1) -> plt.plot(arg2) ->
等。
有什么暗示我可以试试吗?
这是我的代码:
import matplotlib.pyplot as plt
#def read_n_plot(datafile, color, thickness, style = '-', *args):
def read_n_plot(datafile, *args, **kwargs):
vinkel = []
intensitet = []
with open(datafile, encoding='utf8', errors='ignore') as f:
if datafile.endswith('.int'):
next(f); next(f)
lines = f.readlines()
for line in lines:
if line and line[0].isalpha():
continue
data = line.split()
theta, counts = float(data[0]), float(data[1])
vinkel.append(theta)
intensitet.append(counts)
intensitet_norm = [i/max(intensitet) for i in intensitet]
plt.plot(vinkel, intensitet_norm, label = datafile, *args, **kwargs)
return vinkel, intensitet_norm
plt.figure(figsize=(16,9))
read_n_plot('NaCl_data.xy', 'k', '--', lw = 1.0)
plt.legend(loc='best')
plt.xlabel(r'$2\theta$')
plt.xlim(0, 65)
plt.ylabel('Intensitet (a.u.)')
plt.tick_params(left=None)
plt.yticks([])
plt.show()
下面的例子使用标准粉末X射线衍射数据作为NaCl
。'--'
关于linestyle
的论点似乎根本没有通过。传说有两个情节。
NaCl数据重复:
发布于 2022-07-15 12:04:37
通过引用正式文件 of matplotlib.pyplot.plot()
,我们可以发现linestyle
是关键字参数。这就是为什么您的代码不能像您预期的那样工作。尝试将'--'
‘替换为ls='--'
。
https://stackoverflow.com/questions/72992945
复制相似问题