RunningTrainsPlot


NameRunningTrainsPlot JSON
Version 1.0.7 PyPI version JSON
download
home_pagehttps://github.com/yourusername/RunningTrainsPlot
Summary铁路列车运行数据可视化工具
upload_time2025-09-14 12:34:59
maintainerNone
docs_urlNone
authorShen-Zeyu,Guan-Chengze,Zheng-Haoyu,He-Zelin,Wu-Yuqian
requires_python>=3.6
licenseNone
keywords railway train visualization plot diagram flow
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # RunningTrainsPlot

为研究人员与工程技术人员提供的可扩展、可交互的铁路可视化工具。

> **注意**: 本项目之前名为"RailwayTrainsVisualization",现已更名为"RunningTrainsPlot"以提供更简洁的名称。如果您之前使用的是旧版本,请使用新名称重新安装。

## 功能特点

- **列流图 (Column Flow Chart)**:铁路线路流量可视化
- **速度曲线 (Speed Curve)**:列车速度-距离/时间曲线可视化
- **循环运行图 (Cyclic Diagram)**:列车循环运行图可视化
- **股道占用图 (Track Occupation)**:列车股道占用可视化
- **客流OD图 (Passenger Flow OD Chart)**:站点间客流可视化
- **工具函数**:数据加载、预处理和可视化工具

## 安装与更新

### 初次安装

```bash
pip install RunningTrainsPlot
```

### 更新到最新版本

```bash
pip install --upgrade RunningTrainsPlot
```

> 注意:只有在发布新版本后才需要使用--upgrade选项更新。可以通过`from RunningTrainsPlot import __version__; print(__version__)`检查当前版本。

### 验证安装

安装完成后可运行以下简单测试验证功能:

```python
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime, timedelta

# 检查版本
from RunningTrainsPlot import __version__
print(f"当前版本: {__version__}")

# 导入所有模块
from RunningTrainsPlot import passenger_flow, column_flow, speed_curve
from RunningTrainsPlot import cyclic_diagram, track_occupation

# 测试股道占用图
base_time = datetime(2023, 1, 1, 8, 0)
data = pd.DataFrame({
    'train_id': ['G201', 'D101', 'K105'],
    'track': ['1股道', '2股道', '3股道'],
    'arrival_time': [
        base_time,
        base_time + timedelta(hours=1),
        base_time + timedelta(hours=2)
    ],
    'departure_time': [
        base_time + timedelta(hours=0.5),
        base_time + timedelta(hours=2),
        base_time + timedelta(hours=3)
    ]
})

# 创建股道占用图
fig, ax = track_occupation.plot_track_occupation(
    data,
    title='股道占用图测试',
    figsize=(10, 6)
)
plt.show()
```

## 使用指南

### 列流图

```python
from RunningTrainsPlot import column_flow

# 加载数据
stations, flows = column_flow.load_flow_data("stations.csv", "flows.csv")

# 绘制图表
column_flow.plot_column_flow(stations, flows)
```

### 速度曲线

```python
from RunningTrainsPlot import speed_curve

# 加载数据
data = speed_curve.load_speed_data("speed_data.csv")

# 绘制速度-距离曲线
speed_curve.plot_speed_curve(data, x_col='distance', y_col='speed')

# 绘制速度-时间曲线
speed_curve.plot_speed_curve(data, x_col='time', y_col='speed')

# 同时绘制两种曲线
speed_curve.plot_speed_distance_time(data)
```

### 循环运行图

```python
from RunningTrainsPlot import cyclic_diagram

# 加载数据
data = cyclic_diagram.load_data("cycle_data.csv")

# 绘制图表
cyclic_diagram.plot_cyclic_diagram(data)
```

### 股道占用图

```python
from RunningTrainsPlot import track_occupation

# 加载数据
data = track_occupation.load_track_data("track_data.csv")

# 绘制股道占用图
track_occupation.plot_track_occupation(data)
```

### 客流OD图表

```python
from RunningTrainsPlot import passenger_flow

# 加载数据
data = passenger_flow.load_data("passenger_data.csv")

# 绘制图表
passenger_flow.plot_passenger_flow(data)
```

## 数据工具

```python
from RunningTrainsPlot import utils

# 加载数据
data = utils.load_data("data.csv")

# 预处理数据
processed_data = utils.preprocess_data(data)
```

## 版本历史

- **1.0.0** - 初始版本,从RailwayTrainsVisualization更名而来
- **1.0.1** - 新增原生循环运行图(cyclic_diagram)实现,不再依赖外部包

## 作者

- ZeyuShen <sc22zs2@leeds.ac.uk>

## 许可证

MIT

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yourusername/RunningTrainsPlot",
    "name": "RunningTrainsPlot",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "railway, train, visualization, plot, diagram, flow",
    "author": "Shen-Zeyu,Guan-Chengze,Zheng-Haoyu,He-Zelin,Wu-Yuqian",
    "author_email": "sc22zs2@leeds.ac.uk",
    "download_url": "https://files.pythonhosted.org/packages/02/ed/23cb262726e3a7b4a7d52a02491d74197c0e49461282bed82bd13f3bc317/runningtrainsplot-1.0.7.tar.gz",
    "platform": null,
    "description": "# RunningTrainsPlot\r\n\r\n\u4e3a\u7814\u7a76\u4eba\u5458\u4e0e\u5de5\u7a0b\u6280\u672f\u4eba\u5458\u63d0\u4f9b\u7684\u53ef\u6269\u5c55\u3001\u53ef\u4ea4\u4e92\u7684\u94c1\u8def\u53ef\u89c6\u5316\u5de5\u5177\u3002\r\n\r\n> **\u6ce8\u610f**: \u672c\u9879\u76ee\u4e4b\u524d\u540d\u4e3a\"RailwayTrainsVisualization\"\uff0c\u73b0\u5df2\u66f4\u540d\u4e3a\"RunningTrainsPlot\"\u4ee5\u63d0\u4f9b\u66f4\u7b80\u6d01\u7684\u540d\u79f0\u3002\u5982\u679c\u60a8\u4e4b\u524d\u4f7f\u7528\u7684\u662f\u65e7\u7248\u672c\uff0c\u8bf7\u4f7f\u7528\u65b0\u540d\u79f0\u91cd\u65b0\u5b89\u88c5\u3002\r\n\r\n## \u529f\u80fd\u7279\u70b9\r\n\r\n- **\u5217\u6d41\u56fe (Column Flow Chart)**\uff1a\u94c1\u8def\u7ebf\u8def\u6d41\u91cf\u53ef\u89c6\u5316\r\n- **\u901f\u5ea6\u66f2\u7ebf (Speed Curve)**\uff1a\u5217\u8f66\u901f\u5ea6-\u8ddd\u79bb/\u65f6\u95f4\u66f2\u7ebf\u53ef\u89c6\u5316\r\n- **\u5faa\u73af\u8fd0\u884c\u56fe (Cyclic Diagram)**\uff1a\u5217\u8f66\u5faa\u73af\u8fd0\u884c\u56fe\u53ef\u89c6\u5316\r\n- **\u80a1\u9053\u5360\u7528\u56fe (Track Occupation)**\uff1a\u5217\u8f66\u80a1\u9053\u5360\u7528\u53ef\u89c6\u5316\r\n- **\u5ba2\u6d41OD\u56fe (Passenger Flow OD Chart)**\uff1a\u7ad9\u70b9\u95f4\u5ba2\u6d41\u53ef\u89c6\u5316\r\n- **\u5de5\u5177\u51fd\u6570**\uff1a\u6570\u636e\u52a0\u8f7d\u3001\u9884\u5904\u7406\u548c\u53ef\u89c6\u5316\u5de5\u5177\r\n\r\n## \u5b89\u88c5\u4e0e\u66f4\u65b0\r\n\r\n### \u521d\u6b21\u5b89\u88c5\r\n\r\n```bash\r\npip install RunningTrainsPlot\r\n```\r\n\r\n### \u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c\r\n\r\n```bash\r\npip install --upgrade RunningTrainsPlot\r\n```\r\n\r\n> \u6ce8\u610f\uff1a\u53ea\u6709\u5728\u53d1\u5e03\u65b0\u7248\u672c\u540e\u624d\u9700\u8981\u4f7f\u7528--upgrade\u9009\u9879\u66f4\u65b0\u3002\u53ef\u4ee5\u901a\u8fc7`from RunningTrainsPlot import __version__; print(__version__)`\u68c0\u67e5\u5f53\u524d\u7248\u672c\u3002\r\n\r\n### \u9a8c\u8bc1\u5b89\u88c5\r\n\r\n\u5b89\u88c5\u5b8c\u6210\u540e\u53ef\u8fd0\u884c\u4ee5\u4e0b\u7b80\u5355\u6d4b\u8bd5\u9a8c\u8bc1\u529f\u80fd\uff1a\r\n\r\n```python\r\nimport pandas as pd\r\nimport matplotlib.pyplot as plt\r\nfrom datetime import datetime, timedelta\r\n\r\n# \u68c0\u67e5\u7248\u672c\r\nfrom RunningTrainsPlot import __version__\r\nprint(f\"\u5f53\u524d\u7248\u672c: {__version__}\")\r\n\r\n# \u5bfc\u5165\u6240\u6709\u6a21\u5757\r\nfrom RunningTrainsPlot import passenger_flow, column_flow, speed_curve\r\nfrom RunningTrainsPlot import cyclic_diagram, track_occupation\r\n\r\n# \u6d4b\u8bd5\u80a1\u9053\u5360\u7528\u56fe\r\nbase_time = datetime(2023, 1, 1, 8, 0)\r\ndata = pd.DataFrame({\r\n    'train_id': ['G201', 'D101', 'K105'],\r\n    'track': ['1\u80a1\u9053', '2\u80a1\u9053', '3\u80a1\u9053'],\r\n    'arrival_time': [\r\n        base_time,\r\n        base_time + timedelta(hours=1),\r\n        base_time + timedelta(hours=2)\r\n    ],\r\n    'departure_time': [\r\n        base_time + timedelta(hours=0.5),\r\n        base_time + timedelta(hours=2),\r\n        base_time + timedelta(hours=3)\r\n    ]\r\n})\r\n\r\n# \u521b\u5efa\u80a1\u9053\u5360\u7528\u56fe\r\nfig, ax = track_occupation.plot_track_occupation(\r\n    data,\r\n    title='\u80a1\u9053\u5360\u7528\u56fe\u6d4b\u8bd5',\r\n    figsize=(10, 6)\r\n)\r\nplt.show()\r\n```\r\n\r\n## \u4f7f\u7528\u6307\u5357\r\n\r\n### \u5217\u6d41\u56fe\r\n\r\n```python\r\nfrom RunningTrainsPlot import column_flow\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\nstations, flows = column_flow.load_flow_data(\"stations.csv\", \"flows.csv\")\r\n\r\n# \u7ed8\u5236\u56fe\u8868\r\ncolumn_flow.plot_column_flow(stations, flows)\r\n```\r\n\r\n### \u901f\u5ea6\u66f2\u7ebf\r\n\r\n```python\r\nfrom RunningTrainsPlot import speed_curve\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\ndata = speed_curve.load_speed_data(\"speed_data.csv\")\r\n\r\n# \u7ed8\u5236\u901f\u5ea6-\u8ddd\u79bb\u66f2\u7ebf\r\nspeed_curve.plot_speed_curve(data, x_col='distance', y_col='speed')\r\n\r\n# \u7ed8\u5236\u901f\u5ea6-\u65f6\u95f4\u66f2\u7ebf\r\nspeed_curve.plot_speed_curve(data, x_col='time', y_col='speed')\r\n\r\n# \u540c\u65f6\u7ed8\u5236\u4e24\u79cd\u66f2\u7ebf\r\nspeed_curve.plot_speed_distance_time(data)\r\n```\r\n\r\n### \u5faa\u73af\u8fd0\u884c\u56fe\r\n\r\n```python\r\nfrom RunningTrainsPlot import cyclic_diagram\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\ndata = cyclic_diagram.load_data(\"cycle_data.csv\")\r\n\r\n# \u7ed8\u5236\u56fe\u8868\r\ncyclic_diagram.plot_cyclic_diagram(data)\r\n```\r\n\r\n### \u80a1\u9053\u5360\u7528\u56fe\r\n\r\n```python\r\nfrom RunningTrainsPlot import track_occupation\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\ndata = track_occupation.load_track_data(\"track_data.csv\")\r\n\r\n# \u7ed8\u5236\u80a1\u9053\u5360\u7528\u56fe\r\ntrack_occupation.plot_track_occupation(data)\r\n```\r\n\r\n### \u5ba2\u6d41OD\u56fe\u8868\r\n\r\n```python\r\nfrom RunningTrainsPlot import passenger_flow\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\ndata = passenger_flow.load_data(\"passenger_data.csv\")\r\n\r\n# \u7ed8\u5236\u56fe\u8868\r\npassenger_flow.plot_passenger_flow(data)\r\n```\r\n\r\n## \u6570\u636e\u5de5\u5177\r\n\r\n```python\r\nfrom RunningTrainsPlot import utils\r\n\r\n# \u52a0\u8f7d\u6570\u636e\r\ndata = utils.load_data(\"data.csv\")\r\n\r\n# \u9884\u5904\u7406\u6570\u636e\r\nprocessed_data = utils.preprocess_data(data)\r\n```\r\n\r\n## \u7248\u672c\u5386\u53f2\r\n\r\n- **1.0.0** - \u521d\u59cb\u7248\u672c\uff0c\u4eceRailwayTrainsVisualization\u66f4\u540d\u800c\u6765\r\n- **1.0.1** - \u65b0\u589e\u539f\u751f\u5faa\u73af\u8fd0\u884c\u56fe(cyclic_diagram)\u5b9e\u73b0\uff0c\u4e0d\u518d\u4f9d\u8d56\u5916\u90e8\u5305\r\n\r\n## \u4f5c\u8005\r\n\r\n- ZeyuShen <sc22zs2@leeds.ac.uk>\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u94c1\u8def\u5217\u8f66\u8fd0\u884c\u6570\u636e\u53ef\u89c6\u5316\u5de5\u5177",
    "version": "1.0.7",
    "project_urls": {
        "Homepage": "https://github.com/yourusername/RunningTrainsPlot"
    },
    "split_keywords": [
        "railway",
        " train",
        " visualization",
        " plot",
        " diagram",
        " flow"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7a1ab57577114c1a1ec5835482f97bbf16bdeb42395fa8bad726645859ab7a34",
                "md5": "62b4b6dc6c170023f4fe3fe666496ba1",
                "sha256": "8fd71c7c1c83e98cf45abdc42be1545afb6bf6801bf1af37b957611e0c978d10"
            },
            "downloads": -1,
            "filename": "runningtrainsplot-1.0.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "62b4b6dc6c170023f4fe3fe666496ba1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 18662,
            "upload_time": "2025-09-14T12:34:57",
            "upload_time_iso_8601": "2025-09-14T12:34:57.489712Z",
            "url": "https://files.pythonhosted.org/packages/7a/1a/b57577114c1a1ec5835482f97bbf16bdeb42395fa8bad726645859ab7a34/runningtrainsplot-1.0.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "02ed23cb262726e3a7b4a7d52a02491d74197c0e49461282bed82bd13f3bc317",
                "md5": "d9fb040ccde5408baea1527186e6c9f9",
                "sha256": "1190b8eda1faef998cc3167952282399c4b9053fbb7853311d975251038df328"
            },
            "downloads": -1,
            "filename": "runningtrainsplot-1.0.7.tar.gz",
            "has_sig": false,
            "md5_digest": "d9fb040ccde5408baea1527186e6c9f9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 15154,
            "upload_time": "2025-09-14T12:34:59",
            "upload_time_iso_8601": "2025-09-14T12:34:59.270995Z",
            "url": "https://files.pythonhosted.org/packages/02/ed/23cb262726e3a7b4a7d52a02491d74197c0e49461282bed82bd13f3bc317/runningtrainsplot-1.0.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-14 12:34:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yourusername",
    "github_project": "RunningTrainsPlot",
    "github_not_found": true,
    "lcname": "runningtrainsplot"
}
        
Elapsed time: 2.22387s