我尝试使用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代表它:
print ggplot(aes(x='TIME', y='Watts'), data=power_data) + \
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")
但得到错误:
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)>
>>>
如何进一步展示图片?
答案 0 :(得分:8)
我错过了3个重要步骤:
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
powd = DataFrame(data2)
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")
或者,在没有comment提供的for
的情况下一次传递:
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")
答案 1 :(得分:0)
我们还可以使用ggplot库 qplot 中的另一个函数来绘制图形。假设上述数据集 power_data 作为输入。我们可以将其绘制为:
import qplot from ggplot
qplot(power_data[:,0], power_data[:,1], type='l')