2017-08-29 63 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 –