2015-11-24 88 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