2017-08-29 73 views
0

我希望显示1000浮点数据集,我决定这样做与情节,我想脱机做,我正在解决一个问题,我真的可以不明白 - 我根本不知道自己做错了什么。情节,没有显示与np.array数据集的坐标

让我们来看看代码。首先我要表明的代码应该工作,用小np.array

import numpy as np 
import plotly as py 
import plotly.graph_objs as go 

list = [1.2,2.3,3.3,4.4,5.4,6.4] 
x_data = np.array(list) 
y_data = np.array(list) 

#x_data = np.array(graph_test_q()) 
#y_data = np.array(graph_test_h()) 

trace = go.Scatter(
    x = x_data, 
    y = y_data, 
) 

data = [trace] 
fig = dict(data=data) 
py.offline.plot(fig, filename='hejsa.html') 
print data 

上述代码的输出: Output of small np.array 看起来工作得很好,但: 下面是代码,我在那里用一个从函数创建的np.array,它从postgrSQL数据库中提取它。我已经检查过,它确实打印了终端中的数据。

def graph_test_q(): 
    conn = psycopg2.connect("dbname='database1' user='postgres'  password='FFgg1905560' host='localhost' port='5432'") 
    cur = conn.cursor() 
    cur.execute("SELECT q FROM pump_data_test WHERE pump_id = 1229") 
    rows = cur.fetchall() 
    conn.commit() 
    conn.close() 
    return rows 

def graph_test_h(): 
    conn = psycopg2.connect("dbname='database1' user='postgres' password='FFgg1905560' host='localhost' port='5432'") 
    cur = conn.cursor() 
    cur.execute("SELECT h FROM pump_data_test WHERE pump_id = 1229") 
    rows = cur.fetchall() 
    conn.commit() 
    conn.close() 
    return rows 

#list = [1.2,2.3,3.3,4.4,5.4,6.4] 
#x_data = np.array(list) 
#y_data = np.array(list) 

x_data = np.array(graph_test_q()) 
y_data = np.array(graph_test_h()) 

trace = go.Scatter(
    x = x_data, 
    y = y_data, 
) 

data = [trace] 
fig = dict(data=data) 
py.offline.plot(fig, filename='hejsa.html') 
print data 

现在,这里是我发现奇怪的东西,这些新np.arrays的输出是这样的空图: enter image description here

当我点击链接在右下角 - “出口绘制.ly“这是现在我得到的输出: enter image description here 在这里,我可以看到看到左侧的图,就像它应该是。如果有人能帮我弄清楚我做错了什么,我将非常感激。

编辑: 从评论:代码用于示出x_data & y_data的dtypes(x_data = np.array(graph_test_q())& y_data = np.array(graph_test_h())):

print(x_data.dtype) 
print(y_data.dtype) 

输出:

float64

float64

0:96:执行错误:“file://hejsa.html”不理解“打开位置”消息。 (-1708)

70:78:执行错误:无法获取应用程序“firefox”。 (-1728) *运行于 http://127.0.0.1:5000/(按CTRL + C退出)

+0

你可以添加'打印(x_data.dtype)'的输出?我怀疑你找回了一串混淆Plotly的字符串和数字。 –

+0

是的。编辑inc – Rook

+0

这似乎是相同的dtype – Rook

回答

0

fetchall返回的元组,那么你结束了一个Numpy阵列,其具有的(n, 1)的形状,其中n是结果的数目。你可以通过以下指标得到正确格式的数据为Plotly

np.array(graph_test_q())[:,0] 

一个完整的演示,请参阅下文。

import plotly 
import numpy as np 
import random 
import sqlite3 

def graph_test_q(): 
    cur = conn.cursor() 
    cur.execute("SELECT q FROM pump_data_test WHERE pump_id = 1229") 
    rows = cur.fetchall() 
    return rows 

def graph_test_h(): 
    cur = conn.cursor() 
    cur.execute("SELECT h FROM pump_data_test WHERE pump_id = 1229") 
    rows = cur.fetchall() 
    return rows 

plotly.offline.init_notebook_mode() 

# Create some mockup data 
conn = sqlite3.connect(':memory:') 
c = conn.cursor() 
c.execute("CREATE TABLE pump_data_test (h, q, pump_id)") 
for i in range(10): 
    c.execute("INSERT INTO pump_data_test VALUES ('{}','{}',1229)".format(i, i + random.random())) 
conn.commit() 

trace1 = plotly.graph_objs.Scatter(
    name='works', 
    x=np.array(graph_test_q())[:,0], 
    y=np.array(graph_test_h())[:,0], 
) 
trace2 = plotly.graph_objs.Scatter(
    name='does not work', 
    x=np.array(graph_test_q()), 
    y=np.array(graph_test_h()), 
) 

data = [trace1, trace2] 
fig = dict(data=data) 
plotly.offline.iplot(fig) 

enter image description here

+0

真棒,它有效。所以[:,0]切片数组? – Rook

+0

它给出了'0'索引:https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html –