GP

通过该插件可以对 DolphinDB 的 vector 和 table 中的数据进行画图,并保存文件到本地。

安装构建

预编译安装

需要执行以下命令,指定插件依赖文件 PostScript 的位置:

export GNUPLOT_PS_DIR=<PluginDir>/gp/bin/linux64/PostScript //指定 gp 插件依赖文件 PostScript 的位置

注意:可从 DolphinDBPlugin/gp/bin/linux64 目录中下载 PostScript。

DolphinDBPlugin/gp/bin/linux64 目录下存放了预先编译的插件文件,在 DolphinDB 中执行以下命令导入 gp 插件:

cd DolphinDB/server //进入 DolphinDB server 目录
./dolphindb //启动 DolphinDB server
loadPlugin("<PluginDir>/gp/bin/linux64/PluginGp.txt");

编译安装

编译依赖库:

安装zlib-1.2.12

tar -zxvf zlib-1.2.12.tar.gz
cd zlib-1.2.12
mkdir build && cd build
cmake  -DCMAKE_INSTALL_PREFIX=/tmp/libzlib ..
make -j
make install

安装libpng-1.6.35

unzip libpng-1.6.35.zip
cd libpng-1.6.35
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/tmp/libpng/ ..
make -j
make install

安装libjpeg-8.4.0

unzip libjpeg-8.4.0.zip
cd libjpeg-8.4.0
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/tmp/libjpeg/ ..
make -j
make install

安装libgd-gd-2.3.3

unzip libgd-gd-2.3.3.zip
cd libgd-gd-2.3.3

在 CMakeLists.txt 第319行添加一行:

set_target_properties(gd PROPERTIES LINK_FLAGS "-Wl,-rpath,$ORIGIN:.")

然后开始编译

mkdir build && cd build
CMAKE_PREFIX_PATH=/tmp/libzlib:/tmp/libpng:/tmp/libjpeg  cmake -DCMAKE_INSTALL_PREFIX=/tmp/libgd/  -DENABLE_PNG=1 -DENABLE_JPEG=1 ..
make -j
make intall

安装 readline-devel

yum install readline-devel

构建插件内容:

cd <PluginDir>/gp
mkdir build
cd build

拷贝前面安装好的 zlib, png, jpeg, gd 库到编译目录 build。

cp /tmp/libgd/lib/libgd.so.3.0.11 ./libgd.so.3
cp /tmp/libpng/lib/libpng16.so.16.35.0 ./libpng16.so.16
cp /tmp/libjpeg/lib/libjpeg.so .
cp /tmp/libzlib/lib/libz.so.1.2.12 ./libz.so.1
ln -s libgd.so.3 libgd.so
cmake  ../
make

注意:编译之前请确保 libDolphinDB.so 在 gcc 可搜索的路径中。直接将其拷贝到 build 目录下。

编译后将在目录下产生文件 libPluginGp.so 和 PluginGp.txt。

用户接口

gp::plot

语法

gp::plot(data, style, path, [props])

详情

使用 DolphinDB 中的数据进行画图,并以 eps 的文件格式保存到本地。

参数

  • data:画图数据。一个向量、由向量组成的 tuple 或一个表。若为表,则用其第一列和第二列分别表示 x 轴、y 轴数据。支持对 CHAR, SHORT, INT, LONG, FLOAT, DOUBLE, DATE, MINUTE, SECOND, DATETIME, DATEHOUR 类型的数据画图。

  • style:字符串,表示画图的样式。包含以下值:"line", "point", "linesoint", "impulses", "dots", "step", "errorbars", "histogram", "boxes", "boxerrorbars", "ellipses", "circles"。

  • path:字符串,表示保存图片的路径。

  • props:字典,表示画图特性。包含以下键值:

    • title:字符串标量或向量,表示每个数据组的标识。
    • xRange:数值型向量,表示图片的 X 轴范围。为数值类型的向量,包含两个元素。
    • yRange:图片的 Y 轴范围。为数值类型的向量,包含两个元素。
    • xLabel:字符串,表示 X 轴标签。
    • yLabel:字符串,表示 Y 轴标签。
    • size:图片比例,1为初始长度。为数值类型的向量,包含两个元素,表示长和宽的比列。
    • xTics:数值型标量,表示 X 轴的单位间隔。
    • yTics:数值型标量,表示 Y 轴的单位间隔。

    以下属性可以设置每个独立图像的特性。

    • lineColor:字符串标量或向量,表示线条颜色。包含以下值:"black", "red", "green", "blue", "cyan", "magenta", "yellow", "navy", "purple", "olive", "orange", "violet", "pink", "white", "gray"。
    • lineWidth:数值型标量或向量,表示线条宽度。
    • pointType:整型标量或向量,表示画点的形状。取值为0到13。
    • pointSize:数值型标量或向量,表示点的大小。
    • smooth:字符串标量或向量,表示数据平滑程度。可以为 "csplines" 或者是 "bezier"。

返回值

例子

data=(rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20),rand(20,20))
prop=dict(STRING,ANY)
prop[`lineColor]=["black", "red", "green", "blue", "cyan", "magenta", "yellow", "navy", "purple", "olive",  "orange", "violet", "pink", "white", "gray"]
prop["xTics"]=2
prop["yTics"]=5
prop["title"]="l"+string(1..15)
re=gp::plot(data,"line",WORK_DIR+"/test.eps",prop)
re=gp::plot(data,"line",WORK_DIR+"/test.png",prop)
re=gp::plot(data,"line",WORK_DIR+"/test.jpeg",prop)