A Textual widget wrapper for the Plotext plotting library
项目描述
textual-plotext
这是一个用于Plotext绘图库的Textual小部件包装器。Plotext绘图库。
简介
该库提供一个小部件:PlotextPlot。这个小部件提供了一个plt属性,您应该将其用于通常使用plt的地方,如Plotext文档中所示。
import plotext as plt
y = plt.sin() # sinusoidal test signal
plt.scatter(y)
plt.title("Scatter Plot") # to apply a title
plt.show() # to finally plot
这个Textual等价物(包括使此应用程序完全工作的所有必需内容)是
from textual.app import App, ComposeResult
from textual_plotext import PlotextPlot
class ScatterApp(App[None]):
def compose(self) -> ComposeResult:
yield PlotextPlot()
def on_mount(self) -> None:
plt = self.query_one(PlotextPlot).plt
y = plt.sin() # sinusoidal test signal
plt.scatter(y)
plt.title("Scatter Plot") # to apply a title
if __name__ == "__main__":
ScatterApp().run()
值得注意的主要差异是
- 我们没有直接导入
plotext。 - 我们使用
PlotextPlot.plt而不是plt。 - 我们没有调用Plotext的
show方法,PlotextPlot会处理这个问题。
安装
可以从PyPi安装此库
$ pip install textual-plotext
安装完成后,您可以通过运行演示来快速测试库
$ python -m textual_plotext
演示应用程序包括Plotext README中显示的许多示例。
更长的示例
要查看如何使用 PlotextPlot 小部件的更长时间示例,请参阅 examples/textual_towers_weather.py。作为额外奖励,它还展示了如何使用 Textual 的 worker API 创建一个 线程化工作线程 从后端获取数据。
支持什么?
以下实用函数提供(通过 PlotextPlot.plt)
plt.sinplt.squareplt.colorizeplt.uncolorize
不支持什么?
有些函数根本不支持;主要是指那些在 Textual 应用程序中不合理的函数。这些包括
plt.interactiveplt.script_folderplt.parent_folderplt.join_pathsplt.save_textplt.read_dataplt.write_dataplt.downloadplt.delete_fileplt.testplt.timeplt.test_data_urlplt.test_bar_data_urlplt.test_image_urlplt.test_gif_urlplt.test_video_urlplt.test_youtube_url
以下属性和子模块也不公开,因为它们也设计为基于 REPL 的交互式使用,并不适合在 Textual 应用程序中使用
plt.docplt.markersplt.colorsplt.stylesplt.themes
此外,目前尚不支持 GIF 图表 或 播放视频;其中之一或两个可能会在未来某个时候实现。
哪些函数是 no-ops?
一些函数作为调用是受支持的,但被重新定义为非操作;这些是通常不会产生负面影响的代码,但在 Textual 应用程序中并不合理。这些包括
plt.clear_terminalplt.showplt.save_fig
主题
Plotext 有 主题系统。Plotext 提供的主题由 PlotextPlot 支持。然而,其中一些主题使用 "ANSI 颜色",因此可能在不同的终端上看起来不同,以及使用的终端主题(如果您的终端支持主题);这里的问题是您的图表可能在不同的环境中看起来非常不同。
为了解决这个问题,textual-plotext 提供了那些主题的额外副本集,所有这些副本都以 textual- 为前缀,使用全 RGB 颜色来确保在给定 Plotext 主题时,在任何地方看起来都一样。
除了 Plotext 主题之外,textual-plotext 还添加了两个名为
textual-design-darktextual-design-light
这两个是两个类似的主题,设计用于在暗模式和浅模式下看起来很好。默认情况下,PlotextPlot 将使用这些主题,并在您的 Textual 应用程序在暗模式和浅模式之间切换 时在这些主题之间切换。如果您想关闭这种行为,只需将您的图表的 auto_theme 属性设置为 False 即可。
已知问题
目前,由于 Plotext 在重复调用 show 或 build[^1] 时似乎存在一个错误,对于设置为 "log" 的 x 或 y 尺度的图表,无法轻松构建此类图表。换句话说,即使在 Plotext 自身的 REPL 中,这个会话
>>> import plotext as plt
>>> plt.xscale("log")
>>> plt.plot(plt.sin(periods=2, length=10**4))
>>> plt.show()
<plot is drawn in the terminal here>
>>> plt.show()
导致 ValueError: math domain error。
有一个解决方案,这适用于 Plotext 的一般使用,并在 Textual 应用程序中也表现得很好。在第一次 show 或 build 之后,将问题比例返回到 "linear"。因此,上面的 REPL 会话应该变为
>>> import plotext as plt
>>> plt.xscale("log")
>>> plt.plot(plt.sin(periods=2, length=10**4))
>>> plt.show()
<plot is drawn in the terminal here>
>>> plt.xscale("linear") # Note this here!
>>> plt.show()
<plot is drawn in the terminal here>
>>> plt.show()
<plot is drawn in the terminal here>
etc...
在一个 Textual 应用程序中,这意味着在创建图表的代码末尾添加以下内容(假设这里的问题是 xscale)
_ = self.plt.build()
self.plt.xscale("linear")
需要更多帮助?
如果您需要关于这个库的帮助,或者与Textual相关的问题,请随时加入Textualize 开发者 在Discord上或其他我们提供支持的地方。
[^1]: 当需要重新渲染图表时(例如,在调整大小的情况下),会重复调用build方法。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
textual_plotext-0.2.1.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | bc6f2d75d8e20dda6321f8254dc3decda8f41f60e6e70a3ddd83b652b890c081 |
|
| MD5 | 45df8213d66d284a468f21d07029ad0f |
|
| BLAKE2b-256 | 6dbf195b67009154bb9eceb02028fb50fb39ab6a81b628b9451397fa9b0c7da6 |
textual_plotext-0.2.1-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a1055cf50fac9af11f56b5ff73442570eb5fd051e513b20aeb8b15a6a2abfcff |
|
| MD5 | 59592de18d7c9016a60dc3a90894a353 |
|
| BLAKE2b-256 | 4900125486e77be52a4222ba5690af564814688f1d5466df1d566540d1950db5 |