在 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 行,在 中 import pandas as pd 文件“C:\Anaconda2\lib\site-packages\pandas_init_.py”,第 13 行,在 "extensions first.".format(module)) ImportError: C extension: No module named ma not built.如果要从源目录导入 pandas,可能需要先运行“python setup.py build_ext --inplace”来构建 C 扩展。 我的建议是备份任何个人作品,然后使用他们的卸载程序卸载 Anaconda。然后检查您的 C: 驱动器并删除与 Anaconda 相关的任何其他文件夹。然后下载最新的 Anaconda。我在桌面上安装了 3.5 和 2.7。 除非您特别需要一个最新的包,否则我只会在最初运行 conda update conda 还要检查您是否调用了正确的 Python 环境。 Conda 允许您创建虚拟环境。一个典型的用例是您可以使用新包测试现有代码。或者为不同的项目创建单独的环境。【参考方案2】:

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 图形包绘制图形的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB如何绘制三维隐函数图形

R绘图pheatmap热图绘制——高阶篇

JavaScript图形实例:再谈曲线方程

QGLWidget - 如何使用重绘构建程序

PyQt5 图形界面 - Qt Designer独立安装包,仅需30M!python图像化界面绘制工具

在 TKinter 窗口中创建图形?