在 Python 中使用 PyX 图形包绘制图形
Posted
技术标签:
【中文标题】在 Python 中使用 PyX 图形包绘制图形【英文标题】:Plotting a graph using PyX graphics package in Python 【发布时间】:2015-11-24 20:45:39 【问题描述】:我创建了一个脚本,用于在一个月内下载有关特定货币的信息,然后将其存储为 .DAT 文件。示例 .DAT 文件如下所示:
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
等等...因此,您会看到所有内容都以两列的形式存储。现在,问题是:我想用它制作一个图表。我尝试使用 PyX,但不知何故它不能将日期放在 x 轴上。您知道如何从这两列(即 .DAT 文件)中绘制图表吗?提前致谢!
【问题讨论】:
能否将日期格式更改为 YYYY.MMDD?如果是这样,图形模块可能会读取它,并且它仍然几乎是您现在拥有的格式。 g.plot(graph.data.file("exemplary.dat", xname=1, y=2), [graph.style.bar()]) for pyX 【参考方案1】:我会为此使用 pandas 和 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()
【讨论】:
我尝试通过 Anaconda 安装 pandas、numpy 和 matplotlib,因为我没有这些。但是,即使我安装了 Anaconda 程序并完成了所有“conda 安装/更新 matplotlib”的工作,甚至通过 PowerShell 和 Anaconda Prompt 更新了 conda 和 anaconda,脚本也无法正常工作,我不知道为什么。 当我执行“conda list”时,它会在那里显示 matplot、numpy、pandas 和所有其他包,但脚本不起作用。我得到的是:文件“graph_z_pliku.py”,第 1 行,在PyX 中还没有官方时间轴支持。但是,您可以使用以下代码使其正常工作。不幸的是,您必须自己设置刻度和短信。
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()
这将导致以下输出:
【讨论】:
以上是关于在 Python 中使用 PyX 图形包绘制图形的主要内容,如果未能解决你的问题,请参考以下文章