为什么ggplot生成的图不显示?

use*_*158 9 python ggplot2 python-3.x python-ggplot

我无法显示来自的情节ggplot.我尝试过类似的东西

import pandas as pd
import pylab as plt
import statsmodels.api as sm
from ggplot import *

df = pd.DataFrame.from_csv('file.csv', index_col=None)
x=df['X']
y=df['Y']
plt=ggplot(data=df,aes(x=x, y=y)) +\
    geom_line() +\
    stat_smooth(colour='blue', span=0.2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

为什么不出现?

Lon*_*Rob 10

由于plt = ggplot(....一些原因,这条线是不对的.

  1. plt是你给pylab模块的名字.plt =会删除它!
  2. data=df是关键字参数(因为data=部分).他们必须追求位置论证.有关详细信息,请参阅Python词汇表keyword条目.你需要通过取出来使第一个参数成立data=,或者将它放在位置参数之后aes(x=x, y=y).
  3. ggplot调用返回一个ggplot对象,而不是pyplot产权相关的事情.ggplot对象draw()没有show().

开发人员自己在这里展示了它是如何完成的:

g = ggplot(df, aes(x=x, y=y)) +\
    geom_line() +\
    stat_smooth(colour='blue', span=0.2)
print(g)
# OR
g.draw()
Run Code Online (Sandbox Code Playgroud)

最后一行g.draw()返回一个matplotlibfigure对象,所以你也可以这样做:

fig = g.draw()
Run Code Online (Sandbox Code Playgroud)

这将使您可以访问该matplotlib图,如果这是您想要做的事情.

  • 这对我很有用,除了我发现draw()方法不存在(至少ggplot-0.11.5-py35_1看起来是当前的).相反,方法是show().此外,show()不会返回任何内容,因此您无法以您描述的方式轻松获取matplotlib图. (2认同)