首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >*args为每个可选参数调用plt.plot()

*args为每个可选参数调用plt.plot()
EN

Stack Overflow用户
提问于 2022-07-15 10:58:42
回答 1查看 73关注 0票数 0

在将任意数量的参数传递给plt.plot()时,我遇到了一些问题。对于每个参数,我尝试通过*args传递,我的函数调用plt.plot()两次,为每个可选参数创建副本。read_n_plot函数的目的是读取一些数据文件,将数据显示为列表,并创建一个所述数据的图。如果我想为一个晶体创建一个XRD标准图,我想让它很容易地与我正在比较的任何实验数据区分开来。

据我所知,*args是一个元组,包含传递给我函数的所有参数。但我似乎想不出如何在*args内部传递所有内容,而不是调用plt.plot(arg1) -> plt.plot(arg2) ->等。

有什么暗示我可以试试吗?

这是我的代码:

代码语言:javascript
运行
复制
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数据重复:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 12:04:37

通过引用正式文件 of matplotlib.pyplot.plot(),我们可以发现linestyle关键字参数。这就是为什么您的代码不能像您预期的那样工作。尝试将'--'‘替换为ls='--'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72992945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档