2015-11-24 130 views
0

我創建了一個腳本,該腳本在一個月內下載有關特定貨幣的信息,然後將其存儲爲.DAT文件。示例性.DAT文件是這樣的:在Python中使用PyX圖形包繪製圖形

二○一五年十一月一十九日4.2477

2015年11月18日4.2509

2015年11月17日4.2433

2015年11月16日4.2472

2015年11月13日4.2362

2015年11月12日4.2245

2015-11-10 4.2485

等等...因此,您會看到所有內容都以兩列的形式存儲。現在,問題是:我想從中創建一個圖表。我試圖使用PyX,但不知何故它不能把日期放在x軸上。你知道我怎麼能從這兩列(那個.DAT文件)中繪出一張圖嗎?提前致謝!

+0

你可以更改日期格式YYYY.MMDD? 如果是這樣,圖形模塊可能會讀取它,它仍然幾乎是你現在的格式。 –

+0

py.p –

回答

0

我會用這個熊貓和matplotlib。

爲了更容易,您需要在讀入數據框之前在文件中插入標題行。

數據

Date xRate 
    2015-11-19 4.2477 
    2015-11-18 4.2509 
    2015-11-17 4.2433 
    2015-11-16 4.2472 
    2015-11-13 4.2362 
    2015-11-12 4.2245 
    2015-11-10 4.2485 

代碼

import pandas as pd 
    import numpy as np 
    import matplotlib as plt 
    # Put the data in the clipboard 
    clipdf = pd.read_clipboard() 

    df = clipdf.set_index('Date') 
    plt.figure(); df.plot(); plt.legend(loc='best') 
    plt.show() 

enter image description here

+0

[pandas](http://pandas.pydata)的g.plot(graph.data.file(「examples.dat」,xname = 1,y = 2),[graph.style.bar()]) .org/pandas-docs/stable /)可以處理很多格式 – toasteez

+0

我試圖通過Anaconda安裝熊貓,numpy和matplotlib因爲我沒有這些。但是,即使我安裝了Anaconda程序,並通過PowerShell和Anaconda Prompt完成了所有'conda安裝/更新matplotlib'的內容,甚至更新了conda和anaconda,但腳本不起作用,我不知道爲什麼。 –

+0

當我做'conda list'時,它會顯示我matplot,numpy,pandas和所有其他包,但腳本不起作用。我所得到的是這樣的: 文件 「graph_z_pliku.py」,1號線,在 進口大熊貓作爲PD 文件 「C:\ Anaconda2 \ LIB \站點包\大熊貓\ __ init__.py」,13號線,在 「extensions first。」。format(module)) ImportError:C擴展名:沒有名爲ma的模塊沒有構建。如果要從源目錄中導入熊貓,您可能需要運行'python setup.py build_ext --inplace'來首先構建C擴展。 –

0

沒有官方的時間軸支持PYX呢。但是,您可以使用下面的代碼使其工作。不幸的是,你必須自己設置蜱和一個texter。

import time, datetime 
from pyx import * 
from pyx.graph.axis import timeaxis 
from pyx.graph import data 

# read the data with the first column being strings 
d = data.file("timeaxis.dat", date=1, value=2) 

# recreate the data while converting the date column to datetime 
d = data.points([[datetime.datetime(*map(int, date.split('-'))), value] 
        for date, value in zip(d.columns["date"], d.columns["value"])], x=1, y=2) 

g = graph.graphxy(height=5, x=timeaxis.timeaxis(manualticks=[timeaxis.timetick(2015, 11, 10), 
                  timeaxis.timetick(2015, 11, 12), 
                  timeaxis.timetick(2015, 11, 14), 
                  timeaxis.timetick(2015, 11, 16), 
                  timeaxis.timetick(2015, 11, 18), 
                  timeaxis.timetick(2015, 11, 20)], 
               texter=timeaxis.timetexter("%b %d"))) 
g.plot(d) 
g.writePDFfile() 

這將導致以下的輸出:

output of the script