Python:如何将ggplot与一个简单的2列数组一起使用?

2024-04-27 12:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用ggplot for python我有以下数据:

power_data = [[  4.13877565e+04,   2.34652000e-01],
[  4.13877565e+04,   2.36125000e-01],
[  4.13877565e+04,   2.34772000e-01],
...
[  4.13882896e+04,   2.29006000e-01],
[  4.13882896e+04,   2.29019000e-01],
[  4.13882896e+04,   2.28404000e-01]]

我想用ggplot来表示它:

^{pr2}$

但得到的错误是:

  File "C:\PYTHON27\lib\site-packages\ggplot\ggplot.py", line 59, in __init__
    for ae, name in self.aesthetics.iteritems():
AttributeError: 'list' object has no attribute 'iteritems'
>>>

我不知道aes(x='TIME', y='Watts')行应该做什么。在

如何格式化power_data列表,以便与ggplot一起使用,我希望第一列在时间x轴上重复,第二列在y轴上?在

如果我尝试使用meat示例,它不会显示任何内容,它只显示

>>> print (ggplot(aes(x='date', y='beef'), data=meat) + \
...     geom_line())
<ggplot: (20096197)>
>>>

我该怎么做才能进一步显示图形?在


Tags: 数据infordatalib错误linefile
2条回答

我们也可以使用ggplot libraryqplot中的另一个函数来绘制图形。假设上述数据集幂函数数据作为输入。我们可以把它描绘成:

import qplot from ggplot qplot(power_data[:,0], power_data[:,1], type='l')

我错过了三个重要步骤:

1)首先,数据需要采用如下格式:

[{'TIME': 41387.756495162001, 'Watts': 0.234652},
 {'TIME': 41387.756500821, 'Watts': 0.236125},
 {'TIME': 41387.756506480997, 'Watts': 0.23477200000000001},
 {'TIME': 41387.756512141001, 'Watts': 0.23453099999999999},
...
 {'TIME': 41387.756574386003, 'Watts': 0.23558699999999999},
 {'TIME': 41387.756580046, 'Watts': 0.23508899999999999},
 {'TIME': 41387.756585706004, 'Watts': 0.235041},
 {'TIME': 41387.756591365003, 'Watts': 0.23541200000000001},
 {'TIME': 41387.756597013002, 'Watts': 0.23461699999999999},
 {'TIME': 41387.756602672998, 'Watts': 0.23483899999999999}]

2)那么数据需要用DataFrame来修饰

^{pr2}$

3)如果没有plt.show(1)图将不会显示

下面是解决上述问题的代码:

from pandas import DataFrame
data2 = []
for i in range(0,len(power_data)):
    data2.append({'TIME': power_data[i][0], 'Watts': power_data[i][1]})

powd = DataFrame(data2)
print powd

# the above can be changed with this line:
# powd = DataFrame(power_data, columns=['TIME', 'Watts'])
# see sugestion in comments 

print ggplot(aes(x='TIME', y='Watts'), data=powd) + \
    geom_point(color='lightblue') + \
    geom_line(alpha=0.25) + \
    stat_smooth(span=.05, color='black') + \
    ggtitle("Power comnsuption over 13 hours") + \
    xlab("Time") + \
    ylab("Watts")

或可选地在一个过程中没有for,如comment中所提供:

powd = DataFrame(power_data, columns=['TIME', 'Watts'])
print ggplot(aes(x='TIME', y='Watts'), data=powd) + \
        geom_point(color='lightblue') + \
        geom_line(alpha=0.25) + \
        stat_smooth(span=.05, color='black') + \
        ggtitle("Power comnsuption over 13 hours") + \
        xlab("Time") + \
        ylab("Watts")

相关问题 更多 >