我想保持颜色的顺序显示在一个chart条形图中。我不在乎使用哪种颜色,我只想保持颜色的顺序。
在下面的例子中,植物1在第一个图中是蓝色的,在第二个图中是红色的。我怎样才能确保植物得到相同的颜色?
我希望grouporder选项会有所帮助,但显然没有帮助。我想避免改变“吸引人”,并利用“合理的违约”。
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;这意味着:

以及:

发布于 2018-10-04 10:17:48
最终我做到了(这似乎过于复杂,我仍然对比我自己更好的答案感兴趣,颜色不同,但一致):
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;这就导致了:

和:

https://stackoverflow.com/questions/52626782
复制相似问题