首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持SGPlot组颜色的顺序

保持SGPlot组颜色的顺序
EN

Stack Overflow用户
提问于 2018-10-03 12:11:56
回答 1查看 608关注 0票数 1

我想保持颜色的顺序显示在一个chart条形图中。我不在乎使用哪种颜色,我只想保持颜色的顺序。

在下面的例子中,植物1在第一个图中是蓝色的,在第二个图中是红色的。我怎样才能确保植物得到相同的颜色?

我希望grouporder选项会有所帮助,但显然没有帮助。我想避免改变“吸引人”,并利用“合理的违约”。

代码语言:javascript
复制
Data A;
  Input Scenario $ Product $ Plant $ Quantity;
  Datalines;
XX A 1 100
XX B 1 200
XX C 1 300
XX A 2 333
XX D 2 888
YY F 1 100
YY B 1 200
YY C 1 300
YY A 2 333
YY D 2 888
;;;

Proc SGPlot Data=A (Where=(Scenario = 'XX')) ;
  VBar Product / Response=Quantity Stat=Sum Group=Plant 
               Dataskin=Sheen Transparency=0.4 
               GroupOrder=Ascending;
Run;

Proc SGPlot Data=A (Where=(Scenario = 'YY')) ;
  VBar Product / Response=Quantity Stat=Sum Group=Plant 
               Dataskin=Sheen Transparency=0.4 
               GroupOrder=Ascending;
Run;

这意味着:

以及:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-04 10:17:48

最终我做到了(这似乎过于复杂,我仍然对比我自己更好的答案感兴趣,颜色不同,但一致):

代码语言:javascript
复制
Data A;
  Input Scenario $ Product $ Plant $ Quantity;
  Datalines;
XX A 1 100
XX B 1 200
XX C 1 300
XX A 2 333
XX D 2 888
YY F 1 100
YY B 1 200
YY C 1 300
YY A 2 333
YY D 2 888
;;;

* Could not find SAS-standard;
Data MyColorList;
  Length FillColor $7.;
  Input FillColor $ @@;
  Nr = _N_;
  Datalines;
#00FF00 #00FFFF #70DB93 #D9D919  
#A67D3D #FF7F00 #855E42 #545454  
#238E23 #4E2F2F #8E236B #DB70DB  
#8C1717 #DB9370 #D8D8BF
;;;

%Let VarName = Plant;
Proc SQL;
  Create Table DAttrs As Select Distinct &VarName. As Value From A Order By     &VarName.;
Quit;

Data DAttrs (Drop=rc Nr);
  If _N_ eq 1 Then Do;
    Declare Hash H (Dataset: "MyColorList");
    H.Definekey('Nr');
    H.Definedata('FillColor');
    H.Definedone();
    If 0 Then Set MyColorList;
  End;
  Set DAttrs;
  ID = "&VarName.";
  Nr = mod(_N_, 15);
  rc = H.Find();
Run;

Proc SGPlot Data=A (Where=(Scenario = 'XX')) 
            DAttrMap=DAttrs ;
  VBar Product / Response=Quantity Stat=Sum 
                 Group=&VarName. AttrID=&VarName. 
             GroupOrder=ascending Dataskin=Sheen 
                 Transparency=0.4 NoStatLabel ;
Run;

Proc SGPlot Data=A (Where=(Scenario = 'YY')) 
            DAttrMap=DAttrs ;
  VBar Product / Response=Quantity Stat=Sum 
             Group=&VarName. AttrID=&VarName. 
             GroupOrder=ascending Dataskin=Sheen 
                 Transparency=0.4 NoStatLabel;
Run;

这就导致了:

和:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52626782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档