【问题标题】:Array element with a sequence具有序列的数组元素
【发布时间】:2016-05-18 03:44:36
【问题描述】:

想要绘制 x_values_edited 和速度。我有这个错误:

ValueError: 使用序列设置数组元素

plt.plot(x_values_edited, speed, '.' )

我的代码和输入在这里:


x_values_Edited:

[datetime.datetime(2015, 1, 1, 0, 0), datetime.datetime(2015, 1, 1, 0, 1), datetime.datetime(2015, 1, 1, 0, 2), datetime .datetime(2015, 1, 1, 0, 3), datetime.datetime(2015, 1, 1, 0, 4), datetime.datetime(2015, 1, 1, 0, 5), datetime.datetime(2015, 1, 1, 0, 6), datetime.datetime(2015, 1, 1, 0, 7), datetime.datetime(2015,

速度:

[[58.5, 97.0, 56.0, 87.5, 95.0, 100.0, 104.0, 98.5, 101.0, 98.5, 86.5, 90.0, 97.5, 16.5, 103.0, 98.0, 48.0, 98.5, 101.5, 98.5, 101.5, 98.5, 98.5 ,22.0,92.5,84.5,103.5,86.5,103.0,96.5,91.5,101.5,86.0],[99.5,101.0,96.5,94.5,92.0,89.5,83.0,94.0,97.5,103.5,93.5,101.0,95.5,89.0 , 102.5, 89.0, 104.5, 102.0, 107.0, 96.5, 97.5, 97.5, 93.0, 95.0, 88.5, 89.0, 101.0, 97.0, 98.5, ]]

【问题讨论】:

  • 你的速度为什么有双括号?
  • 您必须放置数据的工作子集或全部。现在,speed 末尾的 ..... 以及 x_values_edited 从未关闭的事实使这无法回答。
  • 我的速度是一个包含列表的列表,它是列表@khelwood的列表。

标签: python arrays plot sequence


【解决方案1】:

这是一个快速修复。

从 matplotlib.pyplot 导入散点图、显示、xlim、ylim

from matplotlib.pyplot import scatter, show, xlim, ylim

for index, item in enumerate(speed):
    scatter([times[index]]*len(item), item, marker='.')

xlim(min(times), max(times))
ylim(min(min(speed)), max(max(speed)))
show()

生产:

抱歉,拖了很久。我必须在地下做!

【讨论】:

  • 真的非常感谢您的帮助 :) @PouriaHadjibagheri
  • 很高兴它帮助...竖起大拇指:)
【解决方案2】:

这是一个工作示例。由于您没有在问题中包含完整的输入,因此我不得不生成时间:

from matplotlib.pyplot import plot, show
from datetime import datetime, timedelta

def date_range(stop, start, step=1):
    """
    Time generator
    :param stop: Stop time
    :type stop: Start time
    :param start: Steps based upon which the time is to be calculated.
    :type start: datetime.datetime()
    :param step: datetime.datetime()
    :type step: int, float
    """
    delta_date = stop - start
    numerator = 0

    while numerator < delta_date.seconds:
        yield start + timedelta(0, numerator)
        numerator += step

speed = [
    58.5, 97.0, 56.0, 87.5, 95.0, 100.0, 104.0, 
    98.5, 101.0, 98.5, 86.5, 90.0, 97.5, 16.5, 
    103.0, 98.0, 48.0, 98.5, 93.5, 99.0, 101.5, 
    86.5, 108.5, 22.0, 92.5, 84.5, 103.5, 86.5, 
    103.0, 96.5, 91.5, 101.5, 86.0
]


speed_len = len(speed)

# Hypothetical start time
date_start = datetime(2014, 3, 15, 0)
# and finish time
date_end = datetime(2014, 3, 15, 0, int(speed_len/60), speed_len%60)

# Generate a time list: 1 second per item in |speed|
x_values_edited = [val for val in date_range(stop=date_end, start=date_start, step=1)]

# Scatter plot
plot(x_values_edited, speed, '.')

# Display the plot
show()

显示这个:

【讨论】:

  • 谢谢。我有一个日期列表(x_values_edited)中每个时间点的速度值列表。有了你的解决方案,我失去了这一点。我需要保留速度和日期之间的关系。 @PouriaHadjibagheri
  • 当然可以。关键是,我需要计算散点图的时间步长,最后你有........。因此我生成了另一个集合。如果你给我准确的输入(在接下来的 20 分钟内),我会给你一个量身定制的解决方案。
  • 知道了,您现在可以在有人删除问题之前将其删除。
猜你喜欢
  • 2018-02-07
  • 2020-08-21
  • 1970-01-01
  • 2017-07-17
  • 2015-11-18
  • 2017-10-20
  • 2023-03-16
  • 1970-01-01
  • 2018-04-25
相关资源
最近更新 更多