大家好 我的任务听起来很简单,但我感到困惑。我有一个Excel文件,其中有五个不同的列(Magnitude,BP1,BP2,D1,D2),每个列具有相同的行数(23)。
输入:五列数字数据。
所需的输出:两个子图。第一个必须包含幅度与频率的关系(将频率理解为每个幅度项从BP1到BP2的线)。第二个必须是“幅度与距离”(以与上面类似的方式理解距离)。
尝试编码:
import numpy as numpy
import os, sys
import os.path
import pandas as pd
import matplotlib.pyplot as plt
fname=os.path.join(workingdir, 'Frequency and BP values.xlsx')
if not os.path.isfile(fname):
sys.exit('File missing: '+fname)
f_read=pd.read_excel(fname, sheet_name='Valores')
#Reading columns
Magnitude=f_read['Magnitude (Mw)'].tolist()
BP1=f_read['BP1'].tolist()
BP2=f_read['BP2'].tolist()
D1=f_read['Distance1'].tolist()
D2=f_read['Distance2'].tolist()
#Building lists
Feq_Mag=[BP1, BP2]
for i in range(0, 23):
Feq_Mag0=[x[i] for x in Feq_Mag]
D_Mag=[D1, D2]
D_Mag=[x[0] for x in D_Mag]
#Plotting attributes
#---Frequency plot
fig=plt.figure()
Freq_plot=fig.add_subplot(121)
Freq_plot.set_xlabel(u'Frequency (Hz)', fontsize=6)
Freq_plot.set_ylabel(u'Magnitude (Mw)', fontsize=6)
Freq_plot.plot(BP_Mag, c='crimson', linewidth=2.5)
plt.show()
new_dir=os.chdir(catdir)
fig.savefig('Ranges_Distribution.png')
plt.close('all')
实际输出:绘制了一条直线,它甚至与幅度值都不对应。它在基本级别上绘制。
感谢您的时间和帮助。
问题来源:stackoverflow
是的,所以,如果我理解正确的话:您有一组x值和两组相应的y值(我们称它们为y1和y2)。您想采用这些值并为每个x从y1到y2画一条线。在这种情况下,您要运行一个for循环。写成二维列表,仅使用列表和matplotlib.pyplot
,这就是我想到的。
import matplotlib.pyplot as plt
y = [[1, 2, 3, 4, 5, 6],
[2, 4, 6, 8, 10, 12]]
x = [1, 2, 3, 4, 5, 6]
some_figure = plt.figure()
some_subplot = some_figure.add_subplot('111')
for i in range(len(x)):
some_subplot.plot([x[i], x[i]], [y[0][i], y[1][i]])
plt.show()
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。