R, 175 172172 154 bytes
function(n)write(`[<-`(m<-matrixc(S<-el" ",0:9)[1+(strsplitx=utf8ToInt(x<-Reduce(paste0,1:n,""),"")),y<-nchar(x),y47),*!upper.tri(mdiag(y<-sum(x|1)))["if"(n%%4%in%2:3n%%4>1,1:y,y:1),"if"(n%%4%in%1:2,1:y!n%%4%%3,y:1)]," "1:y)]],1,y,,"")
A horrible in-line mess!
-3 bytes by changing the rotation condition
Ungolfed and simplified a bit:-17 bytes thanks to digEmAll's suggestion, and another byte after golfing that further
function(n){
Concat <- Reduce(paste0,1:n,init="") # concatenate all the digits, with init = "" to handle the n=1 case
digits <- el(strsplit(Concat,"")) # split the string to get component digits
mat <- matrix(digits,nchar(Concat),nchar(Concat)) # create a matrix with the digits running down the columns,
# for example, n = 4 is [[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]]
mat[upper.tri(mat)[(n%%4 condiditon),(n%%4 condition)]] <- " " # conditioned on (n %% 4), replace the values in mat with spaces
write(mat,1,nchar(Concat),,"") # print the transpose of mat
}