Matplotlib 正在打印线图两次/多次

如果 Matplotlib 像这样打印线图两次或多次,可能会出现什么问题:

http://img3.mukewang.com/62d618ed00013ca805240499.jpg

这是我的代码:


import pandas as pd

import numpy as np

import scipy

import matplotlib.pyplot as plt

from scipy import integrate 



def compute_integrated_spectral_response_ikonos(file, sheet):

    df = pd.read_excel(file, sheet_name=sheet, header=2)


    blue = integrate.cumtrapz(df['Blue'], df['Wavelength'])

    green = integrate.cumtrapz(df['Green'], df['Wavelength'])

    red = integrate.cumtrapz(df['Red'], df['Wavelength'])

    nir = integrate.cumtrapz(df['NIR'], df['Wavelength'])

    pan = integrate.cumtrapz(df['Pan'], df['Wavelength'])



    plt.figure(num=None, figsize=(6, 4), dpi=80, facecolor='w', edgecolor='k')

    plt.plot(df[1:], blue, label='Blue', color='darkblue');

    plt.plot(df[1:], green, label='Green', color='b');

    plt.plot(df[1:], red, label='Red', color='g');

    plt.plot(df[1:], nir, label='NIR', color='r');

    plt.plot(df[1:], pan, label='Pan', color='darkred')

    plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0.)

    plt.xlabel('Wavelength (nm)')

    plt.ylabel('Spectral Response (%)')

    plt.title(f'Integrated Spectral Response of {sheet} Bands')

    plt.show()


compute_integrated_spectral_response_ikonos('Sorted Wavelengths.xlsx', 'IKONOS')

这是我的数据集。


jeck猫
浏览 67回答 1
1回答

扬帆大鱼

这是因为绘图df[1:]将整个数据框绘制为 x 轴。>>> df[1:]     Wavelength      Blue     Green       Red       NIR       Pan1           355  0.001463  0.000800  0.000504  0.000532  0.0006192           360  0.000866  0.000729  0.000391  0.000674  0.0003613           365  0.000731  0.000806  0.000597  0.000847  0.0002444           370  0.000717  0.000577  0.000328  0.000729  0.0004355           375  0.001251  0.000842  0.000847  0.000906  0.000914..          ...       ...       ...       ...       ...       ...133        1015  0.002601  0.002100  0.001752  0.002007  0.149330134        1020  0.001602  0.002040  0.002341  0.001793  0.136372135        1025  0.001946  0.002218  0.001260  0.002754  0.118682136        1030  0.002417  0.001376  0.000898  0.000000  0.103634137        1035  0.001300  0.001602  0.000000  0.000000  0.089097[137 rows x 6 columns]切片[1:]只给出没有第一行的数据框。改变 to 的每个实例df[1:]给df['Wavelength'][1:]了我们我认为是预期的输出:>>> df['Wavelength'][1:]1       3552       3603       3654       3705       375133    1015134    1020135    1025136    1030137    1035Name: Wavelength, Length: 137, dtype: int64输出:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python