Compare commits

..

34 Commits

Author SHA1 Message Date
SASPAC - SAS Packages Archive 251b9ebeff Merge pull request #55 from SASPAC/dev
The BasePlus package [ver. 3.1.3]
2026-02-02 14:14:34 +01:00
Bart Jablonski 7347c52e80 The BasePlus package [ver. 3.1.3]
The BasePlus package [ver. 3.1.3]

Package regenerated with SAS Packages Framework, version 20250202. No functional changes, documentation cleaned up.
2026-02-02 14:12:04 +01:00
SASPAC - SAS Packages Archive 4a56a2b5ee Merge pull request #54 from SASPAC/dev
The BasePlus package [ver. 3.1.2]
2026-01-26 17:44:52 +01:00
Bart Jablonski 2fcb5086aa The BasePlus package [ver. 3.1.2]
The BasePlus package [ver. 3.1.2]

Package regenerated with SAS Packages Framework, version 20250126. No functional changes, documentation cleaned up.
2026-01-26 17:27:41 +01:00
SASPAC - SAS Packages Archive b9d5aac3aa Merge pull request #53 from SASPAC/dev
The BasePlus package [ver. 3.1.1]
2025-11-05 15:21:01 +01:00
Bart Jablonski 3b14b9cd3e The BasePlus package [ver. 3.1.1]
The BasePlus package [ver. 3.1.1]

Update:
- Minor updates `%dirsAndFiles()` macro.

- File SHA256: `F*6394CE27FBCF48D475F682CBCF8CA8B4FDD6D40D2672EF571F4A561BDDF274A6` for this version
- Content SHA256: `C*3CA28DF8F3E6D6670D7FD44788D347452F24F4BCF18115873E7EBC742FE30CA4` for this version
2025-11-05 15:19:21 +01:00
SASPAC - SAS Packages Archive 124cc01c3d Merge pull request #52 from SASPAC/dev
The BasePlus package [ver. 3.1.0]
2025-10-20 11:07:32 +02:00
Bart Jablonski 65dc1c510d The BasePlus package [ver. 3.1.0]
The BasePlus package [ver. 3.1.0]

Update:
- Update in macro `%findDSwithVarVal()`. To handle bigger range of engines, when a library is assigned with different engine than: "BASE","SPDE","V6","V7","V8","V9","CVP" observation number is not returned.

- File SHA256: `F*9FFBC40A2B7FC51161C7D6D120DADC3ACEF8087E4EB43BB1A3F0FBC1F1CBD5AC` for this version
- Content SHA256: `C*76C55A9F392EAB938D199144CC834EF332CD78BA8B98565FA003DEA509A33A3E` for this version
2025-10-20 11:01:34 +02:00
SASPAC - SAS Packages Archive 5be733fb98 Merge pull request #51 from SASPAC/dev
The BasePlus package [ver. 3.0.0]
2025-10-15 10:36:02 +02:00
Bart Jablonski eb43a1be93 The BasePlus package [ver. 3.0.0]
The BasePlus package [ver. 3.0.0]

New:
- New utility macro `%workLib()`, created in collaboration with Ryo Nakaya, added.

- File SHA256: `F*B9F6D8F1EDD1ECDA89F4BE327C4F4202649475D1D9DFB476279B633D9F14125D` for this version
- Content SHA256: `C*680412F6B403870A3A8975FC17300F7C92AEDECA48D3F242B5BC4E545DC6D313` for this version
2025-10-15 10:23:51 +02:00
SASPAC - SAS Packages Archive 7ff5b3de09 Merge pull request #50 from SASPAC/dev
The BasePlus package [ver. 2.4.1]
2025-09-05 10:43:14 +02:00
Bart Jablonski 0fab75eda8 The BasePlus package [ver. 2.4.1]
The BasePlus package [ver. 2.4.1]

Fix:
- Fix engine recognition code in `%splitDSintoBlocks()` macro.

- File SHA256: `F*DB0811D8F207641BD45FCE30CB75D03CDF8D06849EBEA268BB575358FAA4E76C` for this version
- Content SHA256: `C*27861ABABB412E8229FE25CD5EEA868F49BB3CBD805CCE65F321ADBC522FAC4E` for this version
2025-09-05 10:30:04 +02:00
SASPAC - SAS Packages Archive 65dd5ba8cb Merge pull request #49 from SASPAC/dev
The BasePlus package [ver. 2.4.0]
2025-08-07 18:28:12 +02:00
Bart Jablonski de1de46fbe The BasePlus package [ver. 2.4.0]
The BasePlus package [ver. 2.4.0]

Changes:
- new parameter `backslashSens=` added to the `%dirsAndFiles()` macro.

- File SHA256: `F*19FE220C82DE4B9990B4AC352A9D9DEF5FAF2FD601BE756B2F3A2AC39CDAF381` for this version
- Content SHA256: `C*83DEF0C93481B1C77494531E5CE9F8EB8E4C15AB3CC48D1E9C0223C13A84DB3F` for this version
2025-08-07 18:26:30 +02:00
SASPAC - SAS Packages Archive a46a4ea9f6 Merge pull request #48 from SASPAC/dev
The BasePlus package [ver. 2.3.1]
2025-08-05 20:23:07 +02:00
Bart Jablonski 8625e9c364 The BasePlus package [ver. 2.3.1]
The BasePlus package [ver. 2.3.1]

Changes:
Fix in log notes produced by `%getVars()` and `%QgetVars()`.

- File SHA256: `F*B2D318DD9708D74E5A7C419F7CAE1BF46D662B7F6AEE7E6B1B9D9B6858A5C41A` for this version
- Content SHA256: `C*C34B47FDC4A22C5F5EACA087FA5308B97C367E8B7C32C5B28D37B491C6DAA9A3` for this version
2025-08-05 20:18:29 +02:00
SASPAC - SAS Packages Archive 0e83226bcc Merge pull request #47 from SASPAC/dev
The BasePlus package [ver. 2.3.0]
2025-08-04 15:52:21 +02:00
Bart Jablonski 059f7feb1c The BasePlus package [ver. 2.3.0]
# The BasePlus package [ver. 2.3.0]

- File SHA256: `F*71DC1AFA709B2977E8AEA452721776F62EEC8240ABD658AC83AA6D4310FC49B6` for this version
- Content SHA256: `C*9CEDE8C64D2C619EBC27AC85B4904D2CE2423C832C6C313E526946FC1417EFD1` for this version

---

### Changes:

Update in macros:
- `%getVars()` and `%QgetVars()`

    - New *optional* parameter `nlit=`. Introduced to improve `validvarname=ANY` handling. Indicates if the `NLITERAL()` function should be executed to cover spacial characters. Default value is `0`.
    - Code simplification for the `mcArray=` parameter case.
    - Situation when the `%getVars()` macro is called with `mcArray=` in `%put` or `%let` statements is handled more gracefully.

- `%zipEvalf()` and `%QzipEvalf()`

    - If the list contains quoted blanks, they are respected now, i.e. `a "b c"` are considered 2 strings, `a` and `b c`.

See documentation for details.

---
2025-08-04 15:45:57 +02:00
SASPAC - SAS Packages Archive 2c7713a45c Merge pull request #46 from SASPAC/dev
The BasePlus package [ver. 2.1.0]
2024-09-09 13:20:22 +02:00
Bart Jablonski 8a41c32d7c The BasePlus package [ver. 2.1.0]
## The BasePlus package [ver. 2.1.0]

### Changes:

Update to the
[`%rainCloudPlot()`](https://github.com/SASPAC/baseplus/blob/2.1.0/baseplus.md#raincloudplot-macro-17)
macro, new `whiskerScale=` parameter added.

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*DFA83F8E0D7424DEB63D49620392068BC68D766552E2804CB6B01DE8E5A87769`

---

### Example.

~~~~sas
%rainCloudPlot(
 sashelp.class
,sex
,height
,whiskerScale=0.5
)
~~~~
2024-09-09 13:16:59 +02:00
SASPAC - SAS Packages Archive 88092381eb Merge pull request #44 from SASPAC/dev
WUSS 2024 conference - materials on %RainCloudPlot() macro
2024-09-05 07:40:19 +02:00
Bart Jablonski 8778f39ce4 WUSS 2024 conference - materials on %RainCloudPlot() macro 2024-09-05 07:26:30 +02:00
SASPAC - SAS Packages Archive dd158fc596 Merge pull request #43 from SASPAC/dev
The BasePlus package [ver. 2.0.1]
2024-07-24 08:14:52 +02:00
Bart Jablonski 8ceeeaadae The BasePlus package [ver. 2.0.1]
## The BasePlus package [ver. 2.0.1]

This release is dedicated to all dyslexics in the world.

### Changes:

New macros:
- [`%expandDataSetsList()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#expanddatasetslist-macro) allowing to expand data set lists of the form: `a1-a3`, `b_:`, mixed, and `_all_`;
- [`%unifyVarsCaseSize()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#unifyvarscasesize-macro) allowing to convert all variables in a list of datasets to all-low-case or all-upcase letters.

Both macros are result of recent discussions at `SAS-L` and `communities.sas.com`.

New format/informats:
- [`bpklength.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bpklength-format)
- [`bplength.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bplength-format)
- Bug fix in spelling (`lenght` vs `length`).

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*FB102C9B12E870666C15A651017D48E0141E47D64C11437350D0EC75A7E9E609`

---

### Example 1. New macros.

~~~~sas
data a1 a2 a3 b_x b_y b_z;
  set sashelp.class(obs=1);
run;

%put #%expandDataSetsList(lib=work,datasets=a1-a3 b_:)#;

proc print data=a1;
proc print data=b_x;
run;

%unifyVarsCaseSize(work,a1-a3 b_:)

proc print data=a1;
proc print data=b_x;
run;
~~~~

### Example 2. New formats/informats:

~~~~sas
data _null_;
  x = input('żółw', bpklength.);
  y = input('żółw', bplength.);
  put x= y=;
run;
~~~~

~~~~log
x=4 y=7
~~~~
2024-07-24 08:10:07 +02:00
SASPAC - SAS Packages Archive f6f520b0d0 Merge pull request #42 from SASPAC/dev
The BasePlus package [ver. 2.0.0]
2024-07-23 22:16:25 +02:00
Bart Jablonski 72595e978a The BasePlus package [ver. 2.0.0]
## The BasePlus package [ver. 2.0.0]

### Changes:

New macros:
- [`%expandDataSetsList()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#expanddatasetslist-macro) allowing to expand data set lists of the form: `a1-a3`, `b_:`, mixed, and `_all_`;
- [`%unifyVarsCaseSize()`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#unifyvarscasesize-macro) allowing to convert all variables in a list of datasets to all-low-case or all-upcase letters.

Both macros are result of recent discussions at `SAS-L` and `communities.sas.com`.

New format/informats:
- [`bpklenght.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bpklenght-format)
- [`bplenght.`](https://github.com/SASPAC/baseplus/blob/2.0.0/baseplus.md#bplenght-format)

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*0730DD793516E5C193842126A7EC9D339ADADD19F0F40B071F938CABDE4E66AD`

---

### Example 1. New macros.

~~~~sas
data a1 a2 a3 b_x b_y b_z;
  set sashelp.class(obs=1);
run;

%put #%expandDataSetsList(lib=work,datasets=a1-a3 b_:)#;

proc print data=a1;
proc print data=b_x;
run;

%unifyVarsCaseSize(work,a1-a3 b_:)

proc print data=a1;
proc print data=b_x;
run;
~~~~

### Example 2. New formats/informats:

~~~~sas
data _null_;
  x = input('żółw', bpklenght.);
  y = input('żółw', bplenght.);
  put x= y=;
run;
~~~~

~~~~log
x=4 y=7
~~~~
2024-07-23 22:15:11 +02:00
SASPAC - SAS Packages Archive 4b19a7438c Merge pull request #41 from SASPAC/dev
The BasePlus package [ver. 1.43.0]
2024-07-22 09:08:06 +02:00
Bart Jablonski e2c4cc66b7 The BasePlus package [ver. 1.43.0]
## The BasePlus package [ver. 1.43.0]

### Changes:

Update to [`%getVars()`](https://github.com/SASPAC/baseplus/blob/1.41.0/baseplus.md#getvars-macro-8) and [`%qgetVars()`](https://github.com/SASPAC/baseplus/blob/1.41.0/baseplus.md#qgetvars-macro-15) macros.

New parameter `ignoreCases=` added. It is an *optional* parameter.
It indicates if variables names search should be case insensitive.
With default value `1`, the search *is* case insensitive.

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*68BB953CD732EB43119A3339656670292317FE1C3B764EC57484C7D5C9DF23EB`

---
2024-07-22 09:05:24 +02:00
SASPAC - SAS Packages Archive 817fa27b6b Merge pull request #40 from SASPAC/dev
The BasePlus package [ver. 1.42.1]
2024-07-19 10:33:21 +02:00
Bart Jablonski bc7b2b5ee8 The BasePlus package [ver. 1.42.1]
## The BasePlus package [ver. 1.42.1]

### Changes:

Update to the
[`%rainCloudPlot()`](https://github.com/SASPAC/baseplus/blob/1.42.1/baseplus.md#raincloudplot-macro-17)
macro, input parameters checks added.

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*2129F372D72A34A4FB1F368A581EA33D64AD4D8F3707213D5B9553F3C3122003`

---
2024-07-19 10:29:38 +02:00
SASPAC - SAS Packages Archive 94ec410027 Merge pull request #39 from SASPAC/dev
The BasePlus package [ver. 1.42.0]
2024-07-10 23:10:40 +02:00
Bart Jablonski 95a0f71940 The BasePlus package [ver. 1.42.0]
## The BasePlus package [ver. 1.42.0]

### Changes:

New macro
[`%GenerateOneLiners()`](https://github.com/SASPAC/baseplus/blob/1.42.0/baseplus.md#generateoneliners-macro)
allowing to generate "one liner" functions of the form:

~~~~sas
%macro FUNCTION()/parmbuff;
%sysfunc(FUNCTION&syspbuff)
%mend FUNCTION;
~~~~

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*6012D1475AE22A4445C032D8EAE092BE515D8CD2AE390CC087F5987ACB8BCB13`

---

### Example

~~~~sas
%GenerateOneLiners(
  listOfFunctions=SUM MEAN MEDIAN VAR
, prefix=_)

%put
  %_SUM(1,2,3,4,5,6)
  %_MEAN(1,2,3,4,5,6)
  %_MEDIAN(1,2,3,4,5,6)
  %_VAR(1,2,3,4,5,6)
;
~~~~
2024-07-10 23:07:23 +02:00
SASPAC - SAS Packages Archive 3cecb0a5c0 Merge pull request #38 from SASPAC/dev
The BasePlus package [ver. 1.41.0]
2024-06-09 18:54:18 +02:00
Bart Jablonski d52e0cf147 The BasePlus package [ver. 1.41.0]
## The BasePlus package [ver. 1.41.0]

### Changes:

Update to the
[`%rainCloudPlot()`](https://github.com/SASPAC/baseplus/blob/1.41.0/baseplus.md#raincloudplot-macro-17)
macro, new parameter:
 - `meanShiftLine=`
 - `meanShiftStep=`
 - `meanShiftColors=`
 - `xaxisValues=`
 - `xaxisValuesDisplay=`
 - `xaxisValuesFormat=`
 - `xaxisValuesRotate=`
 - `xaxisOther=`
 - `reuseN=`

See [documentation](https://github.com/SASPAC/baseplus/blob/main/baseplus.md) for details.

---

SHA256 digest for BasePlus: `F*6760DDF382E7CA9A1291F028FA7F2BACB68A3D31CEA3A85104E13EA08645AEF1`

---
2024-06-09 18:51:00 +02:00
116 changed files with 123016 additions and 87 deletions
+5 -1
View File
@@ -51,10 +51,14 @@ libname NEW "%workPath()/new";
%put %date(yymmddn10.) %time(time5.) %datetime(e8601dt.);
%put %monthShift(2023,1,-5);
%put #%expandDataSetsList(lib=sashelp,datasets=_all_)#;
%workLib(ABC)
```
and more.
SHA256 digest for the latest version of `BasePlus`: F*BD0333B92D7CB639A136CD4994DE0C63F8396E449E45BC714D71D2E15318F42D
SHA256 digest for the latest version of `BasePlus`: F*B762F900EEFF7035880891D89416C0F973E4D377BCB75486283363A9BDADBA82
[**Documentation for BasePlus**](./baseplus.md "Documentation for BasePlus")
+778 -85
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+698
View File
@@ -0,0 +1,698 @@
/* WUSS 2024 Paper 164 */
/* "Here Comes the Rain (Cloud Plot) Again" */
/* by Bartosz Jablonski */
/* Rain Cloud Plots - PART 1 - Article Plots */
/* SETUP *//*
----------------------------------------------------------------------
Only the first time:
^^^^^^^^^^^^^^^^^^^^
filename packages "/path/to/my/packages";
filename SPFinit url "https://bit.ly/SPFinit"; *(1);
%include SPFinit;
%installPackage(SPFinit BasePlus) *(2);
----------------------------------------------------------------------
On start of fresh SAS session:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
filename packages "/path/to/my/packages";
%include packages(SPFinit.sas);
%loadPackageS(BasePlus) *(3);
----------------------------------------------------------------------*/
/*footnotes**********************************************************
*(1); Bitly points to:
https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/SPFinit.sas
*(2); BasePlus is loaded for the %RainCloudPlot() macro.
*(3); RainCloudPlot can be just "cherry picked" from BasePlus:
%loadPackage(BasePlus, cherryPick=RainCloudPlot)
*********************************************************************/
/* basePlus, version 1.41.0 or later is required */
/* Help notes in log */
%helpPackage(basePlus, RainCloudPlot)
%let path=/path/for/plots/; /* adjust for your session */
resetline;
data have;
call streaminit(42);
do i = 1 to 3;
groupingVar = byte(64+i);
do j = 1 to rand("integer",17,42);
select(i);
when(1) analysisVar = rand("uniform", 1, 7);
when(2) analysisVar = rand("normal", -3, 2);
when(3) analysisVar = rand("exponential", 2);
otherwise;
end;
output;
end;
end;
drop i j;
run;
proc print;
run;
/* utility macros */
%macro beforePlot(N,orientation=landscape,papersize=A4);
ods printer close; ods pdf close;
options orientation=&orientation. nodate nonumber papersize=&papersize. center;
options topmargin=0cm leftmargin=0cm rightmargin=0cm bottommargin=0cm;
ods pdf file="&path.//WUSS2024paper164plot&n..pdf" contents=no notoc dpi=600;
ods printer file="&path.//WUSS2024paper164plot&n..svg" printer=svg dpi=600;
%mend beforePlot;
%macro afterPlot();
ods printer close;
ods pdf close;
%mend afterPlot;
/* 1 */
%beforePlot(1);
%rainCloudPlot(
have
, groupingVar
, analysisVar
)
%afterPlot()
/* 2 */
%beforePlot(2)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, TITLE = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";
)
, FOOTNOTE =
%str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
)
%afterPlot()
/* 3 */
%beforePlot(3)
data colors;
input color :$20. @@;
retain y -0.5;
value=1;
x=1;
y+1;
cards;
BlueViolet RoyalBlue OliveDrab
Gold HotPink Crimson
MediumPurple CornflowerBlue YellowGreen
Goldenrod Orchid IndianRed
;
run;
proc sgplot data=colors noborder noautolegend nowall subpixel;
styleattrs
DATACOLORS = (
BlueViolet RoyalBlue OliveDrab
Gold HotPink Crimson
MediumPurple CornflowerBlue YellowGreen
Goldenrod Orchid IndianRed
)
;
vbarparm response=value category=value/
group=color
grouporder=data
nooutline
groupdisplay=stack
clusterwidth=1
baselineattrs=(thickness=0)
;
text X=x Y=y TEXT=color /
backlight=.5
position=right
discreteoffset=-0.42
textattrs=(family="Courier New" size=14 weight=bold)
;
xaxis display=none offsetmax=0 offsetmin=0;
yaxis display=none;
run;
%afterPlot()
/* 4 */
%beforePlot(4)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";
)
, footnote =
%str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, MONOCHROME=1
)
%afterPlot()
/* 5 */
%beforePlot(5)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, COLORSLIST = CornflowerBlue OliveDrab IndianRed
)
%afterPlot()
/* 6 */
%beforePlot(6)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, RAINDROPSIZE = 8px
, KERNEL_K = quadratic
, KERNEL_C = 0.99
, VSCALE = Percent
, VSCALEmax = 60
)
%afterPlot()
/* 7 */
%beforePlot(7)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud (without BOX) Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, BOXPLOT=0
)
%afterPlot()
/* 8 */
%beforePlot(8)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, BOXPLOT=1
, BOXPLOTFILL = 0.5
, BOXPLOTLINESIZE = 2px
, BOXPLOTSYMBOLSIZE = 12px 8px
)
%afterPlot()
resetline;
proc format;
value $ FormatForGroup
"A" = 'Uniform[1, 7]'
"B" = 'Normal(-4, 2)'
"C" = 'Exponential(2)'
other = "Unknown!"
;
picture myPercent
0-100 = "099.9%"
other = "Wrong value"
;
run;
proc datasets lib=work nolist;
modify have;
format groupingVar $FormatForGroup.;
run;
quit;
/* 9 */
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%beforePlot(9)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, XLABELS = ("Analyzed variable")
, XLABELPOS = CENTER
, XLABELATTRS = &labelStyle.
, XAXISVALUEATTRS = &valuesStyle.
, XAXISTICKSTYLE = ACROSS
, XBOTHAXIS = 0
, XAXISVALUES=(-10 to 10 by 2)
, XAXISVALUESFORMAT=F5.2 /* instead w.d format use Fw.d !! */
, XAXISOTHER=grid gridattrs=(thickness=0)
minor minorgrid minorgridattrs=(color=cxefefef pattern=dot)
, CATLABELS = ("Grouping variable with formated values")
, CATLABELPOS = TOP
, CATLABELATTRS = &labelStyle.
, CATAXISVALUEATTRS = &valuesStyle.
, FORMATED = 1
, Y2AXIS = 1
, Y2AXISLEVELS = 5
, Y2AXISVALUEATTRS = &valuesStyle.
, Y2AXISFORMAT = myPercent.
, Y2AXISLINES = 1
)
%afterPlot()
/* 10 */
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%beforePlot(10)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("Analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(-8 to 8 by 2)
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable with formated values")
, catlabelpos = TOP
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, WIDTHPX = 1200
, HEIGHTPX = 300
, MINRANGE = -8
, MAXRANGE = 8
)
%afterPlot()
/* 11 */
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%beforePlot(11)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("Analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(-8 to 8 by 2)
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable with formated values")
, catlabelpos = TOP
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, widthpx = 1200
, heightpx = 300
, minrange = -8
, maxrange = 8
, ODSGRAPHICSOPTIONS = NOBORDER
, SGPLOTOPTIONS = NOAUTOLEGEND NOBORDER NOWALL PAD=0
)
%afterPlot()
/* 12 */
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
data WORK.IN_PROGRESS;
function="TEXT"; transparency=0.5;
textcolor="GOLD"; textweight="BOLD";
widthunit="PERCENT"; drawspace="GRAPHPERCENT";
width=500;
label="*) will be ready for WUSS 2024";
textsize=24; anchor="LEFT ";
x1=2; y1=3; rotate=0;
output;
label="Draft(*ESC*){sup '*'}";
textsize=128; anchor="CENTER";
x1=50; y1=50; rotate=30;
output;
run;
%beforePlot(12)
%rainCloudPlot(
have
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("Analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(-8 to 8 by 2)
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable with formated values")
, catlabelpos = TOP
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, widthpx = 1200
, heightpx = 300
, minrange = -8
, maxrange = 8
, odsgraphicsoptions = noborder
, sgplotoptions = noautolegend noborder nowall pad=0
, SGANNO = WORK.IN_PROGRESS
)
%afterPlot()
/* 13 */
%beforePlot(13)
%rainCloudPlot(
have2
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot - vertical";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE2, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("Analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(-8 to 8 by 2)
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable (formatted)")
, catlabelpos = CENTER
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, widthpx = 1200
, heightpx = 300
, minrange = .
, maxrange = .
, odsgraphicsoptions = noborder
, sgplotoptions = noautolegend noborder nowall pad=0
, sganno = work.in_progress
, MEANSHIFTLINE=1
, MEANSHIFTSTEP=0.1
, MEANSHIFTCOLORS=Blue Green Red
)
%afterPlot()
resetline;
/* 14 */
data have2;
set have;
groupingVar2 = ifc(0=mod(_N_,2),"Even","Odd");
analysisVar2 = rannor(42);
run;
%beforePlot(14)
%rainCloudPlot(
have2
, groupingVar groupingVar2
, analysisVar analysisVar2
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot &gi. &xj.";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE2, with 87 observations, four variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("First analyzed variable", "Second analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
/*, xaxisValues=(-8 to 8 by 2)*/
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable one", "Grouping variable two")
, catlabelpos = TOP
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, widthpx = 1200
, heightpx = 300
, minrange = .
, maxrange = .
, odsgraphicsoptions = noborder
, sgplotoptions = noautolegend noborder nowall pad=0
, sganno = work.in_progress
, meanShiftLine =1
)
%afterPlot()
/* 15 */
%beforePlot(15,orientation=PORTRAIT)
%rainCloudPlot(
have2
, groupingVar
, analysisVar
, title = %nrstr(title1 J=C HEIGHT=2 "The Rain Cloud Plot - vertical";
title2 J=C HEIGHT=1 "Plotting for groups: &list_g.";)
, footnote = %str(footnote1 J=R H=1 C=Gray
"Data set HAVE2, with 87 observations, two variables.";)
, colorslist = CornflowerBlue OliveDrab IndianRed
, raindropsize = 8px
, kernel_k = quadratic
, kernel_c = 0.99
, vscale = percent
, vscalemax = 60
, boxplot=1
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, xlabels = ("Analyzed variable")
, xlabelpos = CENTER
, xlabelattrs = &labelStyle.
, xaxisvalueattrs = &valuesStyle.
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(-8 to 8 by 2)
, xaxisValuesFormat=F5.2
, xaxisOther=GRID MINOR MINORGRID MINORGRIDATTRS=(color=CXeFeFeF pattern=dot) GRIDATTRS=(thickness=0)
, catlabels = ("Grouping variable (formatted)")
, catlabelpos = CENTER
, catlabelattrs = &labelStyle.
, cataxisvalueattrs = &valuesStyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesStyle.
, y2axisformat = myPercent.
, y2axislines = 1
, widthpx = 1200
, heightpx = 300
, minrange = .
, maxrange = .
, odsgraphicsoptions = noborder
, sgplotoptions = noautolegend noborder nowall pad=0
, sganno = work.in_progress
, meanShiftLine=1
, meanShiftStep=0.05
, VERTICAL = 1
)
%afterPlot()
/*
%helpPackage(basePlus, RainCloudPlot)
*/
Binary file not shown.
+299
View File
@@ -0,0 +1,299 @@
/* WUSS 2024 Paper 164 */
/* "Here Comes the Rain (Cloud Plot) Again" */
/* by Bartosz Jablonski */
/* Rain Cloud Plots - PART 2 - Presentation Plots */
/*
See:
Rain Cloud Plots - PART 1 - Article Plots (file: Paper_164-WUSS2024.sas)
for details about the setup.
*/
data have;
call streaminit(64);
vertical = 42;
do j = 1 to 42;
horizontal = rand("uniform", 24, 42);
output;
end;
drop i j;
run;
data have;
set have;
horizontal = horizontal - 13;
run;
proc print;
run;
/* 101 */
%beforePlot(101)
%rainCloudPlot(
have
, vertical
, horizontal
, TITLE = %str(
title1 H=2 J=C "Here Come The Rain Again";
title2 H=1 J=C "Bartosz Jablonski";
)
, FOOTNOTE =
, vscale = percent
, vscalemax = 42
, y2axislevels = 1
, BOXPLOT=1
, BOXPLOTFILL = 0.5
, RAINDROPSIZE = 8px
, COLORSLIST=CX222222
, BOXPLOTLINESIZE = 2pt
, MINRANGE = 0
, MAXRANGE = 42
, xaxistickstyle = ACROSS
, xbothaxis = 0
, xaxisValues=(0 to 42 by 42)
, xaxisValuesFormat=F3.0
, xaxisOther=MINOR
, widthpx = 1200
, heightpx = 800
)
%afterPlot()
%beforePlot(102)
%rainCloudPlot(sashelp.cars, origin, invoice)
%afterPlot()
%beforePlot(103)
%rainCloudPlot(sashelp.class, sex, height)
%afterPlot()
%beforePlot(104)
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, TITLE = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, FOOTNOTE = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
)
%afterPlot() /*"*/
%beforePlot(105)
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, title = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, footnote = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
, COLORSLIST = OrangeRed OliveDrab
, BOXPLOTFILL = 0.5
, BOXPLOTLINESIZE = 2px
, BOXPLOTSYMBOLSIZE = 12px 8px
)
%afterPlot()
%beforePlot(106)
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, title = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, footnote = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
, colorslist = OrangeRed OliveDrab
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, RAINDROPSIZE = 3px
, KERNEL_K = triangular
, KERNEL_C = 0.99
, VSCALE = Percent
, VSCALEmax = 75
)
%afterPlot()
%beforePlot(107)
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, title = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, footnote = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
, colorslist = OrangeRed OliveDrab
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, raindropsize = 3px
, kernel_k = triangular
, kernel_c = 0.99
, vscale = percent
, vscalemax = 75
, XLABELS = ("Analyzed variable")
, XLABELPOS = CENTER
, XLABELATTRS = &labelStyle.
, XAXISVALUEATTRS = &valuesStyle.
, XAXISTICKSTYLE = ACROSS
, XBOTHAXIS = 0
, XAXISVALUES=(1e4 to 18e4 by 1e4)
, XAXISVALUESFORMAT=dollar12.2
, XAXISOTHER=grid gridattrs=(thickness=0)
minor minorgrid minorgridattrs=(color=cxefefef pattern=dot)
, CATLABELS = ("Grouping variable")
, CATLABELPOS = TOP
, CATLABELATTRS = &labelStyle.
, CATAXISVALUEATTRS = &valuesStyle.
, FORMATED = 1
, Y2AXIS = 1
, Y2AXISLEVELS = 5
, Y2AXISVALUEATTRS = &valuesStyle.
, Y2AXISFORMAT = F5.2
, Y2AXISLINES = 1
, WIDTHPX = 1200
, HEIGHTPX = 350
)
%afterPlot()
data WORK.AT_WUSS;
function="TEXT"; transparency=0.3;
textcolor="CornflowerBlue"; textweight="BOLD";
widthunit="PERCENT"; drawspace="GRAPHPERCENT";
width=500;
label="WUSS(*ESC*){sup '*'}";
textsize=96; anchor="CENTER";
textfont="Courier New";
x1=75; y1=20; rotate=0;
output;
run;
%beforePlot(108)
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, title = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, footnote = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
, colorslist = OrangeRed OliveDrab
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, raindropsize = 3px
, kernel_k = triangular
, kernel_c = 0.99
, vscale = percent
, vscalemax = 75
, xlabels = ("Analyzed variable")
, xlabelpos = center
, xlabelattrs = &labelstyle.
, xaxisvalueattrs = &valuesstyle.
, xaxistickstyle = across
, xbothaxis = 0
, xaxisvalues=(1e4 to 18e4 by 1e4)
, xaxisvaluesformat=dollar12.2
, xaxisother=grid gridattrs=(thickness=0)
minor minorgrid minorgridattrs=(color=cxefefef pattern=dot)
, catlabels = ("Grouping variable")
, catlabelpos = top
, catlabelattrs = &labelstyle.
, cataxisvalueattrs = &valuesstyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesstyle.
, y2axisformat = f5.2
, y2axislines = 1
, widthpx = 1200
, heightpx = 350
, SGANNO = WORK.AT_WUSS
, MEANSHIFTLINE=1
, MEANSHIFTSTEP=0.01
, MEANSHIFTCOLORS=gold blue
)
%afterPlot()
data WORK.AT_WUSS2;
function="TEXT"; transparency=0.3;
textcolor="CornflowerBlue"; textweight="BOLD";
widthunit="PERCENT"; drawspace="GRAPHPERCENT";
width=500;
label="WUSS(*ESC*){sup '2'}";
textsize=96; anchor="CENTER";
textfont="Courier New";
x1=60; y1=70; rotate=0;
output;
run;
%beforePlot(109,orientation=PORTRAIT)
%let labelStyle = size=10 family="Courier New" color=MidnightBlue weight=bold;
%let valuesStyle = size=8 family="Courier New" style=italic;
%rainCloudPlot(sashelp.cars(where=(origin in: ("E" "U"))), origin, invoice
, title = %nrstr(title1 J=C HEIGHT=2 "Distribution of cars prices";
title2 J=C HEIGHT=1 COLOR=DarkGrey "Europe vs. US";
)
, footnote = %str(footnote1 J=l H=1 C=Gray "1%) Data from SASHELP.CARS";) /*"*/
, colorslist = OrangeRed OliveDrab
, boxplotfill = 0.5
, boxplotlinesize = 2px
, boxplotsymbolsize = 12px 8px
, raindropsize = 3px
, kernel_k = triangular
, kernel_c = 0.99
, vscale = percent
, vscalemax = 75
, xlabels = ("Analyzed variable")
, xlabelpos = top
, xlabelattrs = &labelstyle.
, xaxisvalueattrs = &valuesstyle.
, xaxistickstyle = across
, xbothaxis = 0
, xaxisvalues=(1e4 to 18e4 by 1e4)
, xaxisvaluesformat=dollar12.2
, xaxisother=grid gridattrs=(thickness=0)
minor minorgrid minorgridattrs=(color=cxefefef pattern=dot)
, catlabels = ("Grouping variable")
, catlabelpos = center
, catlabelattrs = &labelstyle.
, cataxisvalueattrs = &valuesstyle.
, formated = 1
, y2axis = 1
, y2axislevels = 5
, y2axisvalueattrs = &valuesstyle.
, y2axisformat = f5.2
, y2axislines = 1
, widthpx = 1200
, heightpx = 400
, sganno = WORK.AT_WUSS2
, meanshiftline=1
, meanshiftstep=0.01
, meanshiftcolors=gold blue
, VERTICAL = 1
, ODSGRAPHICSOPTIONS = NOBORDER
, SGPLOTOPTIONS = NOAUTOLEGEND NOBORDER NOWALL PAD=0
)
%afterPlot()
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More