简体   繁体   English

从列表数据创建图形

[英]Creating a graphic from the data of a list

I have this list:我有这个清单:

[(200, array([1.81101387])), (300, array([2.73324657])), (400, array([3.66660659])), (500, array([4.61826639])), (600, array([5.57527109])), (700, array([6.54331291])), (800, array([7.5340437])), (900, array([8.53877086])), (1000, array([9.54263164])), (1100, array([10.57365805])), (1200, array([11.61853761])), (1300, array([12.67720361])), (1400, array([13.74957748])), (1500, array([14.83556906])), (1600, array([15.93507691])), (1700, array([17.07408599])), (1800, array([18.20190138])), (1900, array([19.37230333])), (2000, array([20.52788386])), (2100, array([21.72908566])), (2200, array([22.94628865])), (2300, array([24.14308228])), (2400, array([25.38997665])), (2500, array([26.65224533])), (2600, array([27.9296472])), (2700, array([29.26490691])), (2800, array([30.57345122])), (2900, array([31.89630179])), (3000, array([33.2811809])), (3100, array([34.63333589])), (3200, array([36.05016039])), (3300, array([37.43023372])), (3400, array([38.87746378])), (3500, array([40.34008923])), (3600, array([41.81764985])), (3700, array([43.30966982])), (3800, array([44.81565878])), (3900, array([46.33511277]))]

It's elements are (height, time) and I would like to know how to create a graphic of this (erasing what says array()).它的元素是(高度,时间),我想知道如何创建一个图形(擦除数组())。

An idea I have is to create a dataframe with pandas and then represent the columns.我的一个想法是用熊猫创建一个数据框,然后表示列。 The problem is that I don't know how to separate the elements in order to introduce them into a dataframe.问题是我不知道如何分离元素以将它们引入数据帧。

Thanks.谢谢。

This should work (assuming x is time and y is height)这应该有效(假设 x 是时间,y 是高度)

import pandas as pd

# add the following lines if you have to copy and paste your data
from numpy import array
data = [(200, array([1.81101387])), (300, array([2.73324657])), (400, array([3.66660659])), (500, array([4.61826639])), (600, array([5.57527109])), (700, array([6.54331291])), (800, array([7.5340437])), (900, array([8.53877086])), (1000, array([9.54263164])), (1100, array([10.57365805])), (1200, array([11.61853761])), (1300, array([12.67720361])), (1400, array([13.74957748])), (1500, array([14.83556906])), (1600, array([15.93507691])), (1700, array([17.07408599])), (1800, array([18.20190138])), (1900, array([19.37230333])), (2000, array([20.52788386])), (2100, array([21.72908566])), (2200, array([22.94628865])), (2300, array([24.14308228])), (2400, array([25.38997665])), (2500, array([26.65224533])), (2600, array([27.9296472])), (2700, array([29.26490691])), (2800, array([30.57345122])), (2900, array([31.89630179])), (3000, array([33.2811809])), (3100, array([34.63333589])), (3200, array([36.05016039])), (3300, array([37.43023372])), (3400, array([38.87746378])), (3500, array([40.34008923])), (3600, array([41.81764985])), (3700, array([43.30966982])), (3800, array([44.81565878])), (3900, array([46.33511277]))]
##

x, y = [item[1][0] for item in data], [item[0] for item in data]

df = pd.DataFrame(data={'time': x, 'height': y})

You can also check that your data is sorted by time by adding this line:您还可以通过添加以下行来检查您的数据是否按时间排序:

data = sorted(data, key=lambda x: x[1][0])

You could unzip your data structure to x and y and then plot them.您可以将数据结构解压缩为xy ,然后绘制它们。

import matplotlib.pyplot as plt 
from numpy import array 

a = [(200, array([1.81101387])), (300, array([2.73324657])), (400, array([3.66660659])), (500, array([4.61826639])), (600, array([5.57527109])), (700, array([6.54331291])), (800, array([7.5340437])), (900, array([8.53877086])), (1000, array([9.54263164])), (1100, array([10.57365805])), (1200, array([11.61853761])), (1300, array([12.67720361])), (1400, array([13.74957748])), (1500, array([14.83556906])), (1600, array([15.93507691])), (1700, array([17.07408599])), (1800, array([18.20190138])), (1900, array([19.37230333])), (2000, array([20.52788386])), (2100, array([21.72908566])), (2200, array([22.94628865])), (2300, array([24.14308228])), (2400, array([25.38997665])), (2500, array([26.65224533])), (2600, array([27.9296472])), (2700, array([29.26490691])), (2800, array([30.57345122])), (2900, array([31.89630179])), (3000, array([33.2811809])), (3100, array([34.63333589])), (3200, array([36.05016039])), (3300, array([37.43023372])), (3400, array([38.87746378])), (3500, array([40.34008923])), (3600, array([41.81764985])), (3700, array([43.30966982])), (3800, array([44.81565878])), (3900, array([46.33511277]))]

x = [_[0] for _ in a]
y = [_[1][0] for _ in a]
# Here it could be also y = [_[1] for _ in a], but we are dealing here with the fact that you have plenty of one-element arrays

plt.plot(x, y)
plt.show()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM