gpt4 book ai didi

sas - 在 PROC TEMPLATE 中使用自定义类而不是 GraphValueText 作为 textattrs 选项?

转载 作者:行者123 更新时间:2023-12-04 19:39:24 26 4
gpt4 key购买 nike

使用 SAS 9.3 并尝试遵守 DRY通过定义自定义样式并将其与整个 PROC TEMPLATE 的统计图 block 中的多个 ENTRY 语句一起使用。

自定义样式:

proc template;
define style llama;
parent=styles.fancyPrinter;
style CustomFonts from GraphFonts /
'GraphValueFont'=("<sans-serif>, <MTsans-serif>",25pt,italic)
;
class foo from GraphValueText /
font = CustomFonts('GraphValueFont')
color = GraphColors('gtext');
end;
run;

然后通过 ODS 语句中的 style= 选项打开。我尝试使用 foo:

Entry halign=left "bar / 1000" / textattrs=foo;

但得到日志信息:

NOTE: The style element 'foo' in the option TEXTATTRS is invalid. The default will be used.

当使用这样的定义设置 TEXTATTRS 时它工作正常(但由于我多次使用它,它不会是 DRY):

textattrs=GraphValueText(weight=bold size=16pt color=CX800080)

此外,我知道 ODS 正在读取样式定义,因为如果我这样做:

style GraphFonts from GraphFonts

并更改字体,它会影响图表。

最佳答案

不幸的是,对于如何做到这一点,我没有很好的答案,尽管可能存在。

我确实认为 GTL 并未完全听取您的意见。例如:

proc template;
define style llama;
parent=styles.fancyPrinter;
style CustomFonts from GraphFonts /
'GraphValueFont'=("<sans-serif>, <MTsans-serif>",25pt,italic)
;
style graphUnicodeText from GraphValueText /
color=red;
style graphValueText from GraphValueText/
color=green;
end;
run;

proc template;
define statgraph entry;
begingraph;
layout overlay;

entry halign=right "First entry statement" /
valign=top textattrs=graphValueText;

histogram weight;

entry halign=right "Second entry statement" /
textattrs=graphUnicodeText;

entry halign=right "Third entry statement" /
valign=bottom pad=(bottom=40px);

endlayout;
endgraph;
end;
run;

ods _all_ close;
ods html file="c:\temp\test.html" path="" gpath="c:\temp\" style=llama;
proc sgrender data=sashelp.class template=entry;
run;
ods html close;

请注意,您不会收到有关 GraphUnicodeText 的任何错误...但您也不会从中得到任何影响。我的猜测是 GTL 只是在部分了解风格的情况下开展工作,因此无法始终尊重您的要求。

我的建议(至少直到/除非 Sanjay 或 Dan 或类似人员可以帮助您找到更好的)是为此目的使用宏变量和/或动态变量。

proc template;
define style llama;
parent=styles.fancyPrinter;
style CustomFonts from GraphFonts /
'GraphValueFont'=("<sans-serif>, <MTsans-serif>",25pt,italic)
;
style graphUnicodeText from GraphValueText /
color=red;
style graphValueText from GraphValueText/
color=green;
end;
run;

proc template;
define statgraph entry;
begingraph;
layout overlay;
dynamic entrycolor;

entry halign=right "First entry statement" /
valign=top;

histogram weight;

entry halign=right "Second entry statement" /
textattrs=(color=entrycolor);

entry halign=right "Third entry statement" /
valign=bottom pad=(bottom=40px);

endlayout;
endgraph;
end;
run;

ods _all_ close;
ods html file="c:\temp\test.html" path="" gpath="c:\temp\" style=llama;
proc sgrender data=sashelp.class template=entry;
dynamic entrycolor="red";
run;
ods html close;

然后您可以在模板的多个位置重用entrycolor,并允许用户在运行时指定它。这并不理想,但它确实有效,至少...

关于sas - 在 PROC TEMPLATE 中使用自定义类而不是 GraphValueText 作为 textattrs 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com