gnuplot 让您的数据可视化
https://www.ibm.com/developerworks/cn/linux/l-gnuplot/index.html
http://blog.sciencenet.cn/blog-373392-527507.html
http://blog.sciencenet.cn/blog-373392-529904.html
语法是统一的:通过输入 help <command> 可以获得任何命令的帮助。接着启动 gnuplot,尝试命令 help set yrange 和 help set(在每个命令之后,使用q 退出帮助)。注意 yrange 是 help set 下的可用子选项之一。
在提示符中输入 plot sin(x) :您应该在弹出窗口中看到熟悉的正弦曲线。
set xrange [-pi:pi]replotresetreplot 命令,它执行先前的 plot 命令。当您绘制曲线图且需要不断对该图进行修改以添加想要的特征时,此命令会非常有用。另外,replot 使您可以添加更多的图。尝试输入 replot cos(x)。依照语法,该命令等同于 plot sin(x), cos(x) 。Replot 就是获取先前的绘图字符串,添加必要的逗号,然后附加输入给它的其余部分。set title "My first graph"set xlabel "Angle, \n in degrees"set ylabel "sin(angle)"plot sin(x)现在,我们注意到 x 轴实际没有标记为度数,看起来不是很好。要修改此问题,通过调整 x 轴上的 tic 标记,使指定的(主)标记仅以 90 度增加和辅标记以 45 度增加。主 tics 的“级别”为 0,这是默认值;辅 tics 的级别为 1。每个点分别由一个 3 元组指定: "label" (放在引号中)、 <point-at-which-tic-is-made> 和 <optional-level>。
|
1
2
3
4
5
6
7
8
9
|
set xrange [-pi:pi] # we want only one cycleset xtics ("0" 0, \ "90" pi/2, "-90" -pi/2, \ "" pi/4 1, "" -pi/4 1, \ "" 3*pi/4 1, "" -3*pi/4 1)set gridset xlabel "Angle,\n in degrees"set ylabel "sin(angle)"plot sin(x) |
图 4. 带有 tics、标题、网格和标签的轴的 sin(x)

xtics 命令功能非常多,具有方便的选项,用于以固定增量创建 tic 标记(在对数标度中为正常倍数),以及用于时间相关数据的特殊格式。查看 help set xtics 中的例子可以获得更多信息。终端设备 —— 题外话
在启动时,您可能注意到终端类型设置为 X11。Gnuplot 采用标准设计,可以在多个终端设备上绘图。这包括直接打印到多种打印机中,包括 Epson、HP 和 Imagen 打印机。它甚至可以在伪设备中绘图,如 postscript 和 png。这主要涉及生成输出文件,而不是可查看文件或打印输出。这是将您的图表包含在其他报表中的一种技巧。虽然我还没有发现在 Windows 中与在 Linux 中有什么不同,本文档建议您在设置输出文件名之前先设置终端类型:
清单 4. 设置输出和终端类型
|
1
2
3
4
|
set terminal png # gnuplot recommends setting terminal before outputset output "output.png" # The output filename; to be set after setting # terminalreplot |
现在,文件 output.png 中有了您刚才绘制的图,且可以包含在一个更大的报表中。许多普遍使用的排版和制图程序都有专门的终端,这些程序包括 Adobe Illustrator( set term aifm )、Corel Draw( set term corel)、AutoCad( set term dxf)和多种 LaTex 相关的终端( eepic、 latex 、 pstricks、 texdraw 、 tpic 等等)。您还可以得到 PostScript、enhanced PostScript (eps) 或 Adobe PDF 格式的文件。您的 gnuplot 版本可能没有编译所有的终端驱动程序 —— 例如,Windows 用户不需要 Xll 终端,Linux 用户不需要 Windows 终端。类似地,出于法律原因,gnuplot 4.0 移除了对 gif 终端的支持。
所有终端在能力上都不相同。其中的一些(如 LaTeX)可能不支持文本的旋转,所以如果您像我们前面那样设置 ylabel,在不同的终端中可能显示不一样。换句话说,您可以在 LaTeX 的特定终端中使用 LaTex 命令。例如, set ylabel "$sin(\\theta)$"(注意我们使用两个反斜杠产生一个 LaTex 所需的反斜杠 —— gnuplot 在将双引号中所括的字符串传送到终端驱动程序之前,先对其进行反斜杠处理)。现在,您可以使用 \input{output.tex} 将输出文件包含在 LaTeX 文件中。要在 PostScript 终端中获得相同的结果,使用相应的 PostScript 命令: {/Symbol q} 。在 enhanced PostScript 和 LaTeX 中,您可以使用表示法 x^{superscript}和 x_{subscript} 得到上标文字。还要注意缩写的终端和输出命令:
清单 5. eps 驱动程序的能力
|
1
2
3
4
5
6
|
set term post enh # enhanced PostScript, essentially PostScript # with bounding boxesset out 'gplt.eps'set xlabel '{/Symbol q_1}set ylabel 'sin^2({/Symbol q_1})'plot sin(x)**2 |
参考资料部分的代码补充说明包含具有以上命令的 TeX 文件示例。
鼠标支持
版本 4.0 提供了新的功能,Windows 和 X11 终端支持鼠标交互。鼠标支持有两个主要用途:坐标跟踪和缩放。鼠标指针的当前坐标显示在终端窗口的左下角。通过双击第一个鼠标按钮可以将其复制到剪贴板中。当您需要设置需要直接坐标的标签或箭头时,此操作会非常有用。(使用 help arrow 和 help label 可以获得这些命令的更多详细信息。)还可以拖动第二个(或右击)鼠标按钮来选择要放大的矩形区域。在 3D 绘图中,您可以拖动鼠标来旋转图像(按住 Ctrl 键将仅更改轴的视图;所以对于要用很长时间才能呈现的图,可以先更改轴,然后放开 Ctrl 键来重新呈现图)。
鼠标支持还支持一组有用的热键:如果先前对图进行了放大, u则取消访大。 g切换网格, l切换坐标轴上的刻度; L切换最靠近指针的最标轴上的刻度, r切换标尺,标尺会建立任意原点。启用了标尺后,屏幕的底部显示当前坐标指针距离标尺原点的 x 轴距离和 y 轴距离以及距离实际原点的 x 轴和 y 轴距离(与点的坐标相同)。在 3D 中,方向键可以用在鼠标拖拉的地方来旋转图像。空格键激活命令窗口, q退出终端窗口。要查看所有选项,在支持鼠标的终端中输入 h。
控制比例和长宽比
默认情况下,gnuplot 对 x 轴和 y 轴都使用比例系数 1,但是它对控制图形的长宽比(y 轴长度与 x 轴长度的比率)不起作用。终端驱动程序使用终端的默认长宽比。比例系数、长宽比或者两者都可以使用 set size 命令指定,例如:
# square is synonymous to an aspect ratio of 1;
# scale y-axis by 2, retain x-axis size
set size ratio square 1,2
gnuplot 使用给定的长宽比能否成功绘制图可能受到终端能力的限制。 set size 也是与 multiplot 命令一起使用才有用,multiplot 命令用于在同一输出屏幕或文件中生成多个图。
绘制多条曲线
正如精明的读者可能已经从上面关于 replot 的注释中推测到的,gnuplot 使您可以同时画多条线。假设我们同时绘制正弦和余弦曲线。简单的 plot 命令为 plot sin(x), cos(x);要画的曲线以逗号分隔。如果不再指定其他项,gnuplot 自动显示两个曲线图,从而它们可以互相区别 —— 在诸如 Windows 和 Xll 的终端中,gnuplot 使用不同的颜色。单色终端使用不同种类的线显示曲线图。通过查看图例(或键),您应该能够知道图中的线分别是何种曲线。gnuplot 还允许您指定绘图的样式,以便获得进一步的控制:
unset xtics # keep all other things simple
plot sin(x) with linespoints pointtype 5, cos(x) w boxes lt 4
图 5. 多条曲线

with 子句(请参阅 help plot with ,如果使用版本 4.0,还有 help plotting styles )使您可以详细而精确地指定线的样式。在本例中,我们说明两种有用的样式。第一种样式 linespoints 通常在对数据绘图时非常有用,它在涉及的每个示例或数据点处标记一个点,并使用线性插值法连接连续的点。这里我们另外指定点类型为 5,它选择终端允许的第五种点。第二种样式 boxes 更适合绘制直方图数据。注意我们如何在 cos(x) 曲线中将 with 缩写成 w 。类似地, lt是 linetype 的缩写,是另一个特定于终端的设置,它选择终端可以绘制的四种线。不必说(什么,您还没有尝试 help plot with吗?),您可以使用 pt 代替冗长的 pointtype。如果想在多条线中使用相同的绘图样式(在一个 plot 命令中或在多个 plot 命令中),可以使用 set 命令设置绘图样式。在 gnuplot 4.0 中,使用 set style function linespoints ;以前的版本使用语法 set function style boxes。要更改用于绘制与函数相对的数据集合的样式,使用 set style data linespoints(以前的版本使用 set data style linespoints )。
gnuplot 如何工作
除了趣味性,本次练习显示了 gnuplot 实际如何对函数绘图 —— 它获取多个样本并在每个样本点绘制值。通常,它会在这些点间平滑地插入值;使用 boxes 样式则强制它使用平面的直方图,linespoints 样式用一个点标记每个样本。要更清楚地观看,显式地将采样比率设为 10( set samples 10 )并重新绘图。(然后将其设置会默认值 100)。
with 子句是我们使用除了 set 之外的其他项来定制图的第一个例子。一些其他普遍使用的选项也可以直接在 plot 命令中设置。例如,还可以设置 xrange: plot [-pi:pi] sin(x)。对默认绘图选项的快速而随意的一次性更改则使用此类语法。要在多个图中或在多个 plot 命令中重新使用,需要使用 set 命令。
当绘制两条或多条曲线时,我们需要关键字或图例来对它们进行区分。默认情况下,关键字在右上角;但是如果它妨碍了图,可以将关键字放到其他位置 —— 如果愿意,甚至可以放到图外。下面的代码片段将关键字放在了左上角,并在它周围设置了一个框。我们还通过在 plot 命令中给定明确的标题来控制图例中为曲线提供的名称。title 可以缩写为 t,正如我们对余弦曲线的设置。如果不想在图例中命名曲线,使用 notitle ,而不是 title 。最后一点,也是新用户经常出错的地方就是如果有标题,标题必须放在 with 子句的前面:
gnuplot 让您的数据可视化的更多相关文章
- Linux 上的数据可视化工具
Linux 上的数据可视化工具 5 种开放源码图形化工具简介 Linux® 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这 ...
- Python图表数据可视化Seaborn:1. 风格| 分布数据可视化-直方图| 密度图| 散点图
conda install seaborn 是安装到jupyter那个环境的 1. 整体风格设置 对图表整体颜色.比例等进行风格设置,包括颜色色板等调用系统风格进行数据可视化 set() / se ...
- 【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇
作为一个理工男.用过了形形色色能够用于科学作图/数据可视化软件:从大学时做实验课推荐用于分析简单採集数据的 Origin; 毕业论文时用来呈现实验时序信号和离线分析脑电信号的 MATLAB.后面还发现 ...
- Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)
Webstorm+Webpack+echarts ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...
- flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法
flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...
- 手把手教你用FineBI做数据可视化
前些日子公司引进了帆软商业智能FineBI,在接受了简单的培训后,发现这款商业智能软件用作可视分析只用一个词形容的话,那就是“轻盈灵动”!界面简洁.操作流畅,几个步骤就可以创建分析,获得想要的效果.此 ...
- 数据可视化案例 | 如何打造数据中心APP产品
意识到数据探索带来的无尽信息,越来越多的企业开始建立自有的数据分析平台,打造数据化产品,实现数据可视化. 在零售商超行业,沃尔玛"啤酒与尿布"的故事已不再是传奇.无论是大数据还是小 ...
- 数据可视化 echarts3
初识 echarts ECharts,一个纯 Javascript 的数据可视化图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefo ...
- 数据可视化-EChart2.0使用总结1
图表是企业级Web开发必不可少的一个功能点.也是“数据可视化的一个具体呈现”.今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的EChart2.0类库.阮一峰的文章同时也 ...
随机推荐
- NetCore使用使用Scaffold-DbContext命令生成数据库表实体类
一.为了模拟项目,本处创建了一个NetCore的Web项目.打算在Models文件夹下生成数据库表的实体类. 二.在程序包管理控制台,输入“Scaffold-DbContext "Serve ...
- centos7 配置mailx使用外部smtp发送外网邮件
1- 安装 1.1- 安装mailx yum install mailx -y 2- 配置 2.1- 配置外部发件邮箱 vim /etc/mail.rc 在最后加上: //如果不存在,则编辑/etc/ ...
- CSS:display:none的使用注意事项
总结:display:none 属性会使元素完全隐藏,js无法获得元素,通过js设置style.display="inline-block" 后 js才可获得此元素的属性和内容 ...
- numpy学习(三)
练习篇(Part 3) 31. 略 32. Is the following expressions true? (★☆☆) np.sqrt(-1) == np.emath.sqrt(-1) prin ...
- S3C2440的时钟原理
Crystal 无源晶体Oscillator 有源晶体(里面有有源器件) 无源晶振内只有一片按一定轴向切割的石英晶体薄片,供接入运放(或微处理器的XTAL端) 以形成振荡.有源晶振内带运放,工作在最佳 ...
- linux - mysql 异常:Ignoring query to other database
问题描述 Ignoring query to other database(忽略其他数据库查询) 问题原因 登录方式错误,登录命令用的是 “mysql -root -p”,应该用命令 “mysql - ...
- Eclipse项目工程导入到IDEA继续开发-超详细
现在Java开发的主流工具是IDEA,不是说Eclipse,各有各的特色.不过我现在深深的爱上了idea这个工具. 但是之前很多项目都是用eclipse开发的,现在就转入到idea中进行继续开发. 1 ...
- SQL操作DBF
--从SQL Server查询器预览dBase 文件中数据select * from openrowset('MICROSOFT.ACE.OLEDB.12.0','dBase 5.0;database ...
- print format
python基础_格式化输出(%用法和format用法) name = 'jack' age = 18 sex = 'man' job = "IT" salary = 9999.9 ...
- Myeclipse异常
打不开文件 问题描述:Myeclipse然打开什么东西都报错了:Could not open the editor: Invalid thread access 解决方法:1.cmd 2.cd 进入你 ...