【问题标题】:How to plot with matplotlib in pycharm?如何在pycharm中用matplotlib作图?
【发布时间】:2023-02-22 01:23:00
【问题描述】:

我只需要调试我所拥有的东西的帮助。我按照我的理解最好地遵循了我们书中的一个例子,但我仍然遇到问题!我想通过从文件导入数据来绘制一年(2022 年)的日出和日落时间。我能够正确地找出导入的东西(我希望),但是当我在 Pycharm(我正在使用的 IDE)中运行它时,我仍然遇到错误。

具体是这些:

追溯(最近一次通话): 文件“C:\Users\sosar\PycharmProjects\pythonProject1\main.py”,第 27 行,位于 left_axis.plot(日期,日出,标签=“日出”) 文件“C:\Users\sosar\PycharmProjects\pythonProject1\venv\Lib\site-packages\matplotlib\axes_axes.py”,第 1688 行,在图中 lines = [*self._get_lines(*args, data=data, **kwargs)] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 文件“C:\Users\sosar\PycharmProjects\pythonProject1\venv\Lib\site-packages\matplotlib\axes_base.py”,第 311 行,在称呼从 self._plot_args( ^^^^^^^^^^^^^^^^ 文件“C:\Users\sosar\PycharmProjects\pythonProject1\venv\Lib\site-packages\matplotlib\axes_base.py”,第 504 行,在 _plot_args raise ValueError(f"x 和 y 必须具有相同的第一维度,但是 " ValueError:x 和 y 必须具有相同的第一维,但具有形状 (365,) 和 (364,)

老实说,我不擅长编码和调试。这花了很长时间才弄清楚,我不确定我是否做对了!但我会在下面发布我的代码!

感谢所有帮助,并提前感谢您!!!!

import csv
import datetime
import matplotlib.pyplot as plt

 with open('sr_ss_clean.csv') as temp_file:
     sunrise = []
     sunset = []
     reader = csv.reader(temp_file)
     next(reader)
     for row in reader:
         sunrise.append(float(row[1]))
         sunset.append(float(row[2]))

start_date = datetime.date(2022, 1, 1)
end_date = datetime.date(2022, 12, 31)
delta = datetime.timedelta(days=1)
date = []

while start_date <= end_date:
    date.append(start_date)
    start_date += delta

figure= plt.figure()
left_axis = figure.add_subplot(1, 1, 1)
right_axis = left_axis.twinx()

left_axis.plot(date, sunrise, label = "Sunrise")
left_axis.plot(date, sunset, label = "Sunset")

left_axis.set_xlabel('Date')
left_axis.legend(loc= 'upper left')
right_axis.set_ylabel('Time of Day')

plt.show()

【问题讨论】:

    标签: python debugging plot graph pycharm


    【解决方案1】:

    您的错误说明 left_axis.plot(date, sunrise, label = "Sunrise") 如下:

    x and y must have same first dimension, but have shapes (365,) and (364,)
    

    这意味着您的日期列表有 365 行长,但日出列表只有 364 行长。这会引发错误,因为您绘制的第 365 个 x 值无法找到第 365 个对应的 y 值。

    如果你会使用:

    left_axis.plot(date[0:364], sunrise, label = "Sunrise")
    

    它可能会起作用。这里我们将日期限制为 364 个值。 您在 Sunrise 列表中的某处遗漏了一天。

    【讨论】:

    • 所以,我尝试了你的方法,但它仍然给了我同样的错误。我可以像一个月的第一天那样只绘制一个月中的特定日期吗?
    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2014-09-29
    • 2023-03-30
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 2017-10-13
    相关资源
    最近更新 更多