При попытке использовать «fill_between» выдается следующая ошибка: «Входные данные, переданные в аргумент« y2 », не являются одномерными». - PullRequest
0 голосов
/ 30 мая 2019

Я просматриваю текст ускоренного курса Python и получаю сообщение об ошибке «Ввод аргумента« y2 »не является одномерным» при попытке использовать часть fill_between в matplotlib.Я не уверен, почему.

Я пробовал это в PyCharm и Anaconda, но получаю ошибку в обеих IDE.Я довольно новичок в программировании и до сих пор не сталкивался с какими-либо проблемами при выполнении шагов, предусмотренных в тексте, до сих пор.В обоих случаях я использую Python 3.7 и Matplotlib 3.0.1

. В качестве примечания, я также не уверен, почему все месяцы не отображаются на оси x, но это отдельная проблема.

    # Create a program where you import weather data from a csv file

# import the csv file, matplotlib(for visualizing), and datetime
import csv
from matplotlib import pyplot as plt
from datetime import datetime

# Create a variable that states the name of the file
filename = 'sitka_weather_2014.csv'
with open(filename) as file:
    # passes the file as an argument to create a reader object
    reader = csv.reader(file)
    # keeps reading until there are no more rows
    header_row = next(reader)

    # Get high temperatures and their dates from the file
    dates, highs, lows = [],[],[]
    for row in reader:
        current_date = datetime.strptime(row[0], "%Y-%m-%d")
        dates.append(current_date)
        high = int(row[1])
        highs.append(high)
        low = int(row[3])
        lows.append([low])

# Plot Data
fig = plt.figure(dpi=250, figsize=(10,6))
plt.plot(dates, highs, c='red',alpha=0.5)
plt.plot(dates,lows, c='blue', alpha=0.5)
plt.fill_between(dates,highs,lows, facecolor='blue',alpha=0.1)
# Format Plot
plt.title("Monthly High Temperatures-2014", fontsize=24)
plt.xlabel('',fontsize=10)
fig.autofmt_xdate()
plt.ylabel('Temperature (F)',fontsize=16)
plt.tick_params(axis ='both', which='major',labelsize=16)
plt.show()

Я ожидаю, что тень покажет между верхней и нижней линиями.Однако в Anaconda отображаются только верхние и нижние линейные графики, и ошибки программы не будут отображать этот график в PyCharm.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Вы рассматриваете low как список, когда уже добавили его в список. При добавлении значения в список нет необходимости ставить квадратные скобки. Для устранения проблемы измените строку

lows.append([low])

Кому:

lows.append(low)
0 голосов
/ 30 мая 2019

Похоже, проблема в том, что список lows является многомерным, потому что вы добавляете каждый элемент в виде списка, используя [low]. Попробуйте заменить

lows.append([low])

от

lows.append(low)
...