如何在 rpy2 中使用 python 中的变量?

How to use the variable from the python in rpy2?

提问人:Joyfulgrind 提问时间:8/16/2012 最后编辑:Joyfulgrind 更新时间:8/17/2012 访问量:958

问:

我的简单程序从 Python 中提取数据库并存储在变量行中。

cursor = con.cursor()       
    cursor.execute("SELECT * FROM traffic")

    #Retrieves data from SQL
    rows = cursor.fetchall()  

    for row in rows:
       row = list(row)
       a = row[1:]
       b = row[:-1]
       print(a)
       print(b)

现在我能够像 [1000L] 一样获得列表 a 和 b 中的月份和流量

['January']
[100L]
['February']
[10430L]
['March']
[1500L]
['April']
[100L]
['May']
[1200L]
['June']
[800L]
['July']
[8000L]
['August']
[100000L]
['September']

现在我想用它来绘制、直方图和饼图。 该行包含两个列:和 。我想使用 Rpy2 将其转换为图表。我该怎么做?这是我的表格:MOnthTraffic

month     | traffic |
+-----------+---------+
| January   |    1000 |
| February  |     100 |
| March     |   10430 |
| April     |    1500 |
| May       |     100 |
| June      |    1200 |
| July      |     800 |
| August    |    8000 |
| September |  100000 |
+-----------+---------+
蟒蛇 r rpy2

评论

1赞 Roman Luštrik 8/16/2012
什么是“图表”(tam ta daaaam)?听起来很可怕。
0赞 Joyfulgrind 8/16/2012
我查看了一些教程,发现:从Python空间变量尝试过,没有用!简单地说,我尝试了 r.x11() r('plot(row)')
0赞 mbatchkarov 8/16/2012
如果你只想做绘图,你可以在 Python 中完成所有操作(使用 matplotlib)。
0赞 Joyfulgrind 8/16/2012
不,我想做复杂的事情。我正处于学习阶段,因此决定先做一些小事。
0赞 Joyfulgrind 8/16/2012
Month 和 Traffic 是两个列名称。首先,我提取了行中的数据!我想将该行变量转换为 R 变量并转换为图表。尝试了 r('plot(row)'),没有用!

答:

1赞 Spacedman 8/16/2012 #1

首先,从数据库中列出两个列表。像这样:

cursor = con.cursor()       
cursor.execute("SELECT * FROM traffic")

#Retrieves data from SQL
rows = cursor.fetchall()  

Month = list()
Traffic = list()

for row in rows:
    Month.append(row['Month'])          # guesswork - what does a row look like?
    Traffic.append(row['Traffic'])

然后,现在你有两个 python 列表,你可以这样绘制一个图:

>>> r.plot(Month,Traffic)
rpy2.rinterface.NULL

你可能想要线条:

>>> r.plot(Month,Traffic,type="l")
rpy2.rinterface.NULL

你可能想要漂亮的标签:

>>> r.plot(Month,Traffic,type="l",xlab="Month",ylab="Traffic")

评论

0赞 Joyfulgrind 8/16/2012
它是静态的。我知道该怎么做。我被困在 dyanimic 中。使用 Python 从数据库中提取数据并打印这些提取数据的图表。
0赞 Spacedman 8/16/2012
哼?所以真正的问题是“如何将数据库的列读入 python 列表?然后问那个。
0赞 Spacedman 8/16/2012
不,你想绘制它们。要绘制它们,您必须从从数据库中迭代获取的行对象创建 python 列表。虽然我们可以读取您的代码,但如果没有像您这样的数据库,我们就无法运行它。
0赞 Joyfulgrind 8/17/2012
我收到此错误:TypeError:元组索引必须是整数,而不是 str。我认为列表方法没有将元组(默认)转换为列表。我尝试做: 对于行中的行: row = list(row) a = row[1:] b = row[:-1] print(a) print(b) 有效但 r.plot(a, b) 不起作用