Project Icon

eplot

Emacs插件交互式数据可视化图表生成工具

eplot是一款Emacs插件,专门用于生成交互式数据可视化图表。该工具支持多种图表类型,包括时间序列图、散点图和条形图等。eplot提供了丰富的自定义选项,如颜色渐变、背景图像和网格线设置,用户可通过简单命令或文件头部配置轻松调整图表外观。此外,eplot还支持CSV文件导入、多数据集绘制和日期时间格式处理,为Emacs用户提供了一个功能强大且灵活的数据可视化解决方案。

eplot 是一个用于交互式生成时间序列图表、绘图和条形图的 Emacs 软件包。

这是一个正在进行中的项目,目前可能还不太实用,但以下是目前的文档:

movie-plot.plt

这里是一个例子...

chart-legend.plt

这是另一个例子。

让我们从头开始。这是一个非常简单的例子,trivial-very-short.plt:

41
42.1
44.7

然后在这个缓冲区中输入 `M-x eplot',你会看到以下显示:

trivial-very-short.plt

如果你安装了 pcsv 包,你也可以处理 CSV 文件。

Year,explore,investigate
2000,1834.6246923361425,3314.978325069512
2001,1973.1940690964868,3484.9536191658754
2002,2128.9463492787686,3671.1459598826505
...

只需在包含这些值的缓冲区中输入 `M-x eplot',eplot 就会尽力显示数据。

要调整图表的外观,有三种可能:

  • 你可以在 eplot 缓冲区中使用 c' 命令,或在 plt 缓冲区中使用 C-c C-v' 命令。这个命令会使用 Transient 界面提示你输入值。

  • 你可以在 eplot 缓冲区中使用 `l' 命令。这会弹出一个辅助的"控制"缓冲区,列出所有可以更改的默认设置。更改任何内容后按回车键即可看到更新后的图表。

  • 最后,你可以在描述图表外观的文件中添加头部信息。

在下面的所有例子中,都使用了最后这种方法,因为在手册中浏览大量不同设置时这很方便,但我猜大多数用户可能更喜欢使用前两种方法中的一种(这两种方法可以混合使用 —— 你可以通过 Transient 进行一些设置,通过控制缓冲区进行一些设置)。

在下面的大多数例子中,都存在以下头部行,但不包含在代码示例中:

Layout: compact
Width: 300
Height: 200

默认情况下,eplot 使用更宽敞的布局,宽度/高度会根据窗口大小自动计算。但对于本手册中的这些例子,显示更小、更紧凑的图表更为方便。

你不需要在 .plt 文件中包含实际的图表数据 —— 相反,你可以用 Data-File: plot 头部指定数据位置:

Data-File: data1.txt

chart-simple.plt

这是该数据集的基本默认外观。

好的,让我们来看看你有哪些选项可以改变图表的外观。

首先,有几种不同的绘图样式可供选择。默认是"line"样式。

Style: square

chart-square.plt

Style: curve

chart-curve1.plt

这使用贝塞尔曲线在点之间画一条平滑的线。它需要一个 Bezier-Factor。如果你把这个因子调得太高,会得到有趣的结果:

Style: curve
Gradient: red black
Bezier-Factor: 0.8

chart-curve2.plt

你也可以为曲线图添加渐变。

Style: triangle
Fill-Color: #c0c0c0

chart-triangle.plt

一些样式还接受 Fill 参数来指定填充颜色。

Style: rectangle

chart-rectangle.plt

Size: 3
Color: red black green blue brown
Style: impulse

chart-impulse-wide.plt

Style: point

chart-point.plt

Style: cross

chart-cross.plt

Style: circle
Size: 8

chart-circle.plt

这就是所有基本的绘图样式。

Data-File: data1.txt

Style: impulse
Color: blue
Data-File: data2.txt

chart-two-plots.plt

你可以在一个图表中包含多个图,每个图都有自己的样式和颜色。

Y-Label-Format: %s%%
X-Label-Format: $%s
Data-File: data1.txt

chart-format.plt

你可以为 X 和 Y 标签指定格式字符串。

X-Label-Format: On %b %e

Data-Format: date
20090101 41
20090102 42.1
20090103 42.1

chart-date1.plt

如果图表是日期/时间格式的,格式字符串将被传递给 `format-time-string'。

Format: bar-chart
Color: vary
Title: How Much Higher Would A Director Place
Mode: dark
X-Label-Orientation: vertical
Margin-Bottom: 150

1347 # Label: James Benning
789 # Label: Raúl Ruiz
782 # Label: Jim Jarmusch
...

directors2.plt

在条形图中,你可以垂直放置 X 标签。

Format: horizontal-bar-chart
Color: vary
Mode: dark

1347 # 标签:詹姆斯·本宁 789 # 标签:劳尔·鲁伊斯 782 # 标签:吉姆·贾木什 ...

directors1.plt

你也可以制作水平条形图。

有一种特殊的颜色规格叫做"vary",它会在一些预定义的易读颜色中进行选择:

样式:圆形 填充颜色:vary 边框颜色:无 大小:8

chart-circle-colors.plt

"vary"并不适用于所有绘图样式:

颜色:vary 数据文件:data1.txt

chart-segment.plt

你也可以为每个数据点指定颜色/大小。以下是一个演示这一点的plt文件摘录:

样式:圆形 填充颜色:无 41 42.1 42.1 44.1 43.6 # 大小:10,填充颜色:红色 43.6 42.9 43 43.2 44.4 44.5 45.4 45.9 52 # 大小:10,填充颜色:蓝色 53

chart-circle-sizes.plt

有时能够用文本或特殊标记突出显示某些值是很有用的。

样式:曲线 颜色:黑色 41 42.1 42.1 ... 53 # 文本:新型号,标记:十字,大小:3 52.5 51 ...

chart-texts.plt

如你所见,你可以同时使用文本和标记。

数据格式:日期

样式:圆形 填充颜色:vary 大小因子:3 ... 20240624 5 20240728 6 20240712 14

chart-circle-size.plt

你也可以使用大小因子——这意味着每个元素将随其值一起缩放。这仅对圆形、矩形等样式有意义。

条形图有些特殊:

格式:条形图

颜色:vary 33 20 24

chart-bar.plt

每个条形单独显示,X轴上的标签显示在条形中间——这与同一数据集的箱线图很不相同:

格式:普通 最小值:0

样式:方形 33 20 24

chart-bar-box.plt

无论如何,第一个条形图再次演示了"vary"颜色,但你可以自己指定颜色:

格式:条形图

颜色:绿色 灰色 33 # 标签:苹果 20 # 标签:橙子 24 # 标签:苹果橙

chart-color-list.plt

当颜色用完时,它会重新开始。这里还演示了另一个特性,即你可以为每个项目指定标签。

你也可以制作每个项目有两个值的图表,eplot会填充这两个值之间的数据:

数据格式:两个值 样式:方形 填充颜色:浅蓝色 填充边框颜色:黑色 数据文件:data-between.txt

chart-between2.plt

模式:暗色 边框宽度:1

数据格式:两个值 样式:方形 渐变:红色 黑色 数据文件:data-between.txt

chart-between1.plt

这是同一个数据集,但处于"暗色模式",并且在值之间有渐变。哦,还有边框,为什么不呢。

数据列:2 41 57.551391 42.1 59.88006 42.1 59.88006 ...

chart-second-column.plt

有时在同一文件中有几个数据集,但在不同的列中会很方便。你可以使用数据列标头来指定要绘制的列。

好的,关于图表你可以指定很多细节。这里有一个例子:

边框颜色:黄色 边框宽度:3 框架颜色:红色 周围颜色:绿色 背景颜色:蓝色 网格颜色:黑色 图表颜色:白色 标题:标题、背景和边框 坐标轴颜色:黑色 标题颜色:红色

数据文件:data1.txt

chart-color.plt

尽情发挥吧!但最好不要那么疯狂。

渐变:黑色 红色 数据文件:data1.txt

chart-gradient1.plt

你也可以使用渐变来绘制数据。

渐变:黑色 红色 样式:方形 数据文件:data1.txt

chart-gradient-square.plt

你可以将渐变放在图表上方:

渐变:黑色 红色 自上而下 上方 数据文件:data1.txt

chart-gradient2.plt

渐变:黑色 红色 自下而上 数据文件:data1.txt

chart-gradient3.plt

你可以指定方向——这个基本上只是交换了颜色的顺序。

渐变:黑色 红色 从右到左 上方 数据文件:data1.txt

chart-gradient4.plt

还可以从右到左... 渐变:黑红从左到右下方 数据文件:data1.txt

chart-gradient6.plt

...以及从左到右。

渐变:黑红从下到上上方 数据文件:data1.txt

渐变:黑红从上到下下方 数据文件:data1.txt

chart-gradient5.plt

以及图表下方。

渐变:黑红从左到右上方 数据文件:data1.txt

chart-two-gradient1.plt

你可以用不同的渐变绘制同一数据集两次,以获得有趣的结果。

渐变:黑红从左到右上方 数据文件:data1.txt

渐变:黑红从下到上 数据文件:data1.txt

chart-two-gradient2.plt

网格位置:顶部 网格颜色:黑色

渐变:#000030蓝色从左到右上方 数据文件:data1.txt

渐变:黑红从上到下下方 数据文件:data1.txt

chart-two-gradient3.plt

使用填充/渐变图表时,通常将网格放在图表顶部会很有用。

网格位置:顶部 网格颜色:#803030

渐变:绿蓝从上到下上方 数据文件:data1.txt

渐变:黄红从上到下下方 数据文件:data1.txt

chart-two-gradient4.plt

疯狂。

网格位置:顶部 网格颜色:黑色 网格不透明度:0.2

渐变:#000030蓝色从左到右上方 数据文件:data1.txt

渐变:黑红从上到下下方 数据文件:data1.txt

chart-two-gradient5.plt

但是当这样将网格放在顶部时,通常将网格设为半透明会在视觉上更加舒适。

渐变:黑色25-紫色-50-白色-75-紫色-黑色 数据文件:data1.txt

chart-gradient-more-stops.plt

你还可以设置更多的停止点。在这种情况下,第二个元素指定每种颜色结束的百分比点,所以上面的示例从黑色开始,然后在25%处是紫色,50%处是白色,75%处又回到紫色,最后在100%处结束于黑色(但你不必在这里包含100% —— 这是默认的)。

X轴标签:天 Y轴标签:金额 左边距:40 下边距:40 网格位置:顶部

数据文件:data1.txt

chart-labels.plt

你可以在坐标轴上添加标签。如果你使用的是紧凑布局(就像我们在这些示例中所做的那样),你需要手动为标签腾出一些空间 —— 在正常布局中,已经为标签预留了空间。

数据格式:日期 平滑处理:移动平均 20090101 157 20090102 156 20090103 152 20090104 152 ...

date-chart2.plt

你还可以使用日期格式来绘制日期序列。这里演示的另一个特性是,你可以让eplot在绘图前对数据进行平滑处理。

数据格式:时间 144000 78.0 145003 170.1 150014 212.9 ...

time-chart-long.plt

同样,你也可以绘制日内时间图表 —— 这采用HHMMSS格式。

数据格式:xy 数据文件:data-circle.txt

chart-xy-circle.plt

eplot并不是真正为做2D图表而设计的 —— 它主要用于时间序列和条形图。但它可以做简单的2D图表,只是缺少一些你所期望的控制。

背景图像文件:background.jpg 网格颜色:#333 颜色:白色 数据文件:data1.txt

chart-background1.plt

你可以在背景中放置漂亮的木纹图像,模拟70年代的感觉。

背景颜色:#888 背景图像文件:background2.jpg 背景图像覆盖:plot 背景图像不透明度:0.6 网格颜色:#333 颜色:白色 数据文件:data1.txt

chart-background2.plt

你可以将背景图像放置在整个图表上,只放在图表后面,或者只放在框架中。还可以调整不透明度。

图表颜色:白色 网格颜色:#444 背景渐变:蓝黑从右到左 数据文件:data1.txt 渐变:红黑

chart-gradient-background.plt

当然,你也可以在整个背景上使用渐变。

头文件:external-headers.plt

如果你要绘制很多图表,通常希望使用相同的基本参数。所以你可以把这些参数放在一个文件中,然后像这样包含它们。你还可以使用`M-x eplot-with-headers'命令,它会使用当前缓冲区中的数据绘图,但从该文件中获取头信息。

所以有很多不同的头信息可以用来影响图表和单个图的外观。要获取所有这些头信息及其可能的值的列表,请使用`M-x eplot-list-chart-headers'命令。

你可以在.plt缓冲区中添加注释 —— 所有以#开头的行都是注释。

eplot-mode

编辑.plt文件的主要模式非常简单。它进行一些字体锁定,然后提供以下命令:

C-c C-c:显示包含渲染图像的缓冲区。 C-c C-e:列出所有不同的头信息并对其进行说明。 TAB:自动完成头信息。

eplot-view-mode

用于显示图表的缓冲区使用另一个简单的主要模式,其中包含一些方便的命令。 C-c C-s:将图像保存到文件。 C-c C-w:指定图像宽度并保存文件。

如果保存为SVG以外的格式,需要使用外部程序"convert"或"rsvg-convert"进行转换。

C-c C-w命令需要"rsvg-convert",因为它会以特定大小渲染SVG图表。这可以避免缩放产生的伪影(模糊等),让您获得任何所需大小的清晰、精美图表。

安装

如果您手动安装(我猜完成后会在ELPA上提供),请在Emacs初始化文件中添加类似以下内容:

(push "~/src/eplot/" load-path) (autoload 'eplot "eplot" nil t) (autoload 'eplot-mode "eplot" nil t) (unless (assoc "\.plt" auto-mode-alist) (setq auto-mode-alist (cons '("\.plt" . eplot-mode) auto-mode-alist)))

根据eplot.el的位置调整您添加到load-path的路径。

API

(可能会有更多内容...)

所有标题都可以通过编程设置默认值,这样您可以定义一个您喜欢的整体外观(然后在需要时使用显式标题覆盖)。

这可以通过eplot-set函数完成:

(eplot-set 'width 600) 
(eplot-set 'height 300)
(eplot-set 'font "arial")
(eplot-set 'background-color "#ffe0e0")
(eplot-set 'grid-color "#c0c0c0")

chart-simple.plt

您可以将此内容放在Emacs初始化文件或其他地方,但需要先添加:

(require 'eplot)
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号