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.sin
plt.square
plt.colorize
plt.uncolorize
不支持什么?
有些函数根本不支持;主要是指那些在 Textual 应用程序中不合理的函数。这些包括
plt.interactive
plt.script_folder
plt.parent_folder
plt.join_paths
plt.save_text
plt.read_data
plt.write_data
plt.download
plt.delete_file
plt.test
plt.time
plt.test_data_url
plt.test_bar_data_url
plt.test_image_url
plt.test_gif_url
plt.test_video_url
plt.test_youtube_url
以下属性和子模块也不公开,因为它们也设计为基于 REPL 的交互式使用,并不适合在 Textual 应用程序中使用
plt.doc
plt.markers
plt.colors
plt.styles
plt.themes
此外,目前尚不支持 GIF 图表 或 播放视频;其中之一或两个可能会在未来某个时候实现。
哪些函数是 no-ops?
一些函数作为调用是受支持的,但被重新定义为非操作;这些是通常不会产生负面影响的代码,但在 Textual 应用程序中并不合理。这些包括
plt.clear_terminal
plt.show
plt.save_fig
主题
Plotext 有 主题系统。Plotext 提供的主题由 PlotextPlot
支持。然而,其中一些主题使用 "ANSI 颜色",因此可能在不同的终端上看起来不同,以及使用的终端主题(如果您的终端支持主题);这里的问题是您的图表可能在不同的环境中看起来非常不同。
为了解决这个问题,textual-plotext
提供了那些主题的额外副本集,所有这些副本都以 textual-
为前缀,使用全 RGB 颜色来确保在给定 Plotext 主题时,在任何地方看起来都一样。
除了 Plotext 主题之外,textual-plotext
还添加了两个名为
textual-design-dark
textual-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 |