Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SVG绘图嵌入SAS';HTML输出文件_Svg_Graph_Plot_Sas - Fatal编程技术网

将SVG绘图嵌入SAS';HTML输出文件

将SVG绘图嵌入SAS';HTML输出文件,svg,graph,plot,sas,Svg,Graph,Plot,Sas,我的印象是INSSAS9.3可以在HTML输出文件=>中嵌入SVG绘图 但是,在Linux服务器上尝试下面的简单示例总是会生成一个包含外部PNG文件的HTML文件 ods listing close; options device=svg; ods graphics / outputfmt=svg reset=all; ods html path="~" file="01_output.html"; proc sgplot data=sashelp.class; scatter x

我的印象是INSSAS9.3可以在HTML输出文件=>中嵌入SVG绘图

但是,在Linux服务器上尝试下面的简单示例总是会生成一个包含外部PNG文件的HTML文件

ods listing close;
options device=svg;
ods graphics / outputfmt=svg reset=all;
ods html path="~" file="01_output.html";

  proc sgplot data=sashelp.class;
    scatter x=height y=weight;
    ellipse x=height y=weight;
  run;

ods html close;
ods listing;

有人知道如何在SAS中以HTML格式嵌入绘图吗?

您需要将
reset=all
移动到ODS图形语句的开头,或者将其删除。您正在将格式设置为SVG,然后将其重置。下面的代码在我的机器(9.3 Windows)上运行,而您的代码生成了一个PNG

ods listing close;
options device=svg;
ods graphics / outputfmt=svg;
ods html  path="c:\temp\" file="01_output.html";

  proc sgplot data=sashelp.class;
    scatter x=height y=weight;
    ellipse x=height y=weight;
  run;

ods html close;
ods listing;

为了在一个步骤中完全嵌入HTML文件,您需要使用9.4并使用自动嵌入svg的
ods html5
。此处不需要使用
options device=svg

编辑:以下内容仅适用于SAS 9.3及更早版本。有关如何在v9.4以后的版本中执行此操作,请参见上面Joe的选定答案

是的,可以将SVG嵌入到.html文件中,但不可以,使用ODS不能一步到位。ODS总是将SVG(或图像)生成到一个单独的文件中,然后生成.html,您需要自己将它们放在一起

这篇关于使用SVG的文章很长,但很好:

这个问题也很有用:

下面是一个管道胶带示例(感谢Joe,我稍微修改了他的代码):

下面创建了一个名为
embedded.HTML
的新HTML文件,其中包含一个非常简单的bones.HTML文件。它只需获取SVG文件的内容,并将其放在文件的中间。 因为SVG实际上只是XML,所以现代浏览器应该可以很好地运行它(但是请参阅上面的链接,了解如何在旧浏览器中运行它)

数据\u空\u;
文件“%sysfunc(路径名(工作))\embedded.html”;
填充“%sysfunc(路径名(工作))\SGPlot1.svg”end=eof;
如果等式1,则执行;
将“”改为“;
结束;
输入;
把"填入";;
如果是eof,那么做;
将“”改为“;
结束;
跑

您在评论中还提到,您可能希望对其他类型的文档(如PDF/RTF)执行相同的操作。如果是这样的话,发布一个新问题可能是值得的,因为您必须用base64编码才能实现这一点,这不是一个简单的练习。

谢谢,这当然更好。也就是说,我现在得到的是外部SVG文件,而不是PNG文件——它们没有嵌入到HTML文件中。它们的意思不是像“将所有SVG直接放入HTML文件”中那样
嵌入
,而是“使用
HTML元素”。具体来说,“使用SAS/GRAPH,使用ODS HTML DEV=SVG语句运行SAS程序。SAS创建SVG文档和HTML文件,使用元素将SVG文档嵌入HTML文件。”是,我想你是对的。进一步研究这一点表明,您只能将SVG嵌入HTML5文件中,而HTML5'仅在SAS 9.4中可用。六羟甲基三聚氰胺六甲醚。。我对绘图和表格的容器文件的搜索是连续的(不包括基于页面的文档,如PDF和RTF)。您看过ODS包吗?可能想注释一下:它不能在SAS 9.3中完成,但在SAS 9.4中可以直接嵌入。
ods listing close;
options device=svg;
ods graphics / outputfmt=svg;

ods html  path="%sysfunc(pathname(work))" file="whatever.html";

  proc sgplot data=sashelp.class;
    scatter x=height y=weight;
    ellipse x=height y=weight;
  run;

ods html close;
ods listing;
data _null_;

  file   "%sysfunc(pathname(work))\embedded.html";
  infile "%sysfunc(pathname(work))\SGPlot1.svg" end=eof;

  if _n_ eq 1 then do;
    put "<html><body>";
  end;

  input;
  put _infile_;

  if eof then do;
    put "</body></html>";
  end;
run;