0

I already searched for and looked at other answers to a similar (probably the same) question, but to be honest I don't get the respective answers since I am absolutely not into R.

What I basically want to do is to show the relation of all the Arm Architectures and their implementations (Processors) and their grouping into Families regarding their "Profiles". So I have 4 axis: Profile, Family, Architecture and Processor.

I took the data from Wikipedia (https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures) and typed it into excel to be able to import it into R-Studio (one again: I just installed R and R-Studio and have absolutely no experience with this language and tools). I preserved the "order", so basically I duplicated the table just in Excel to be able to import the Data in R-Studio.

> head(ARM)
# A tibble: 6 × 4
  Profil  Familie Architektur Prozessor
  <chr>   <chr>   <chr>       <chr>    
1 Classic ARM1    ARMv1       ARM1     
2 Classic ARM2    ARMv2       ARM2     
3 Classic ARM2    ARMv2a      ARM250   
4 Classic ARM3    ARMv2a      ARM3     
5 Classic ARM6    ARMv3       ARM60    
6 Classic ARM6    ARMv3       ARM600   

Complete data:

> dput(ARM)
structure(list(Profil = c("Classic", "Classic", "Classic", "Classic", 
"Classic", "Classic", "Classic", "Classic", "Classic", "Classic", 
"Classic", "Classic", "Classic", "Classic", "Classic", "Classic", 
"Classic", "Classic", "Classic", "Classic", "Classic", "Classic", 
"Classic", "Classic", "Classic", "Classic", "Classic", "Classic", 
"Classic", "Classic", "Classic", "Classic", "Microcontroller", 
"Classic", "Microcontroller", "Microcontroller", "Microcontroller", 
"Microcontroller", "Microcontroller", "Microcontroller", "Microcontroller", 
"Microcontroller", "Microcontroller", "Microcontroller", "Microcontroller", 
"Realtime", "Realtime", "Realtime", "Realtime", "Realtime", "Realtime", 
"Application", "Application", "Application", "Application", "Application", 
"Application", "Application", "Application", "Application", "Application", 
"Application", "Application", "Application", "Application", "Application", 
"Application", "Application", "Application", "Application", "Application", 
"Application", "Application", "Application", "Application", "Application", 
"Application"), Familie = c("ARM1", "ARM2", "ARM2", "ARM3", "ARM6", 
"ARM6", "ARM6", "ARM7", "ARM7", "ARM7", "ARM7T", "ARM7T", "ARM7T", 
"ARM7T", "ARM7EJ", "ARM8", "ARM9T", "ARM9T", "ARM9T", "ARM9T", 
"ARM9E", "ARM9E", "ARM9E", "ARM9E", "ARM9E", "ARM10E", "ARM10E", 
"ARM10E", "ARM11", "ARM11", "ARM11", "ARM11", "SecurCore", "SecurCore", 
"SecurCore", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", "Cortex", 
"Cortex", "Cortex"), Architektur = c("ARMv1", "ARMv2", "ARMv2a", 
"ARMv2a", "ARMv3", "ARMv3", "ARMv3", "ARMv3", "ARMv3", "ARMv3", 
"ARMv4T", "ARMv4T", "ARMv4T", "ARMv4T", "ARMv5TEJ", "ARMv4", 
"ARMv4T", "ARMv4T", "ARMv4T", "ARMv4T", "ARMv5TE", "ARMv5TE", 
"ARMv5TE", "ARMv5TEJ", "ARMv5TE", "ARMv5TE", "ARMv5TE", "ARMv5TEJ", 
"ARMv6", "ARMv6T2", "ARMv6Z", "ARMv6K", "ARMv6-M", "ARMv4T", 
"ARMv7-M", "ARMv6-M", "ARMv6-M", "ARMv6-M", "ARMv7-M", "ARMv7E-M", 
"ARMv7E-M", "ARMv8-M Baseline", "ARMv8-M Mainline", "ARMv8-M Mainline", 
"ARMv8.1-M Mainline", "ARMv7-R", "ARMv7-R", "ARMv7-R", "ARMv7-R", 
"ARMv8-R", "ARMv8-R", "ARMv7-A", "ARMv7-A", "ARMv7-A", "ARMv7-A", 
"ARMv7-A", "ARMv7-A", "ARMv7-A", "ARMv8-A", "ARMv8-A", "ARMv8-A", 
"ARMv8-A", "ARMv8-A", "ARMv8-A", "ARMv8-A", "ARMv8.2-A", "ARMv8.2-A", 
"ARMv8.2-A", "ARMv8.2-A", "ARMv8.2-A", "ARMv8.2-A", "ARMv8.2-A", 
"ARMv8.2-A", "ARMv8.2-A", "ARMv8.2-A", "ARMv8.2-A", "ARMv9-A"
), Prozessor = c("ARM1", "ARM2", "ARM250", "ARM3", "ARM60", "ARM600", 
"ARM610", "ARM700", "ARM710", "ARM710a", "ARM7TDMI(-S)", "ARM710T", 
"ARM720T", "ARM740T", "ARM7EJ-S", "ARM810", "ARM9TDMI", "ARM920T", 
"ARM922T", "ARM940T", "ARM946E-S", "ARM966E-S", "ARM968E-S", 
"ARM926EJ-S", "ARM966HS", "ARM1020E", "ARM1022E", "ARM1026EJ-S", 
"ARM1136J(F)-S", "ARM1156T2(F)-S", "ARM1176JZ(F)-S", "ARM11MPCore", 
"SC000", "SC100", "SC300", "Cortex-M0", "Cortex-M0+", "Cortex-M1", 
"Cortex-M3", "Cortex-M4", "Cortex-M7", "Cortex-M23", "Cortex-M33", 
"Cortex-M35P", "Cortex-M55", "Cortex-R4", "Cortex-R5", "Cortex-R7", 
"Cortex-R8", "Cortex-R52", "Cortex-R82", "Cortex-A5", "Cortex-A7", 
"Cortex-A8", "Cortex-A9", "Cortex-A12", "Cortex-A15", "Cortex-A17", 
"Cortex-A32", "Cortex-A34", "Cortex-A35", "Cortex-A53", "Cortex-A57", 
"Cortex-A72", "Cortex-A73", "Cortex-A55", "Cortex-A65", "Cortex-A65AE", 
"Cortex-A75", "Cortex-A76", "Cortex-A76AE", "Cortex-A77", "Cortex-A78", 
"Cortex-A78AE", "Cortex-X1", "Cortex-A78C", "Cortex-A710")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -77L))

Currently I am plotting with this command(s):

ggplot(data = ARM,
       aes(axis1 = Profil, axis2 = Familie, axis3 = Architektur, , axis4 = Prozessor)) +
  scale_x_discrete(limits = c("Profil", "Familie", "Architektur", "Prozessor"), expand = c(.2, .05)) +
  geom_alluvium(aes(fill = Architektur)) +
  stat_stratum() +
  ggfittext::geom_fit_text(stat = "stratum", min.size = 0, aes(label = after_stat(stratum))) +
  theme_void()

This results in a very "ugly" result, with lots of crossings, since R alphabetically orders the stratums: current result

So in my opinion, the best order would be to simply preserve the order from the input data.

How can I archive this behavior? I already read a lot about "factor" and "lode format" but I have no clue what all this means.

Maybe someone can help me with this.

Kind regards

Chilippso
  • 451
  • 2
  • 9

1 Answers1

1

You can re-order the axes by converting your character vectors to factors and specifying the levels you want. Demonstrating for the first axis:

ARM$Profil = factor(ARM$Profil, levels = unique(ARM$Profil))

enter image description here

dww
  • 30,425
  • 5
  • 68
  • 111
  • Thank you very much, that's it. As I said I already have known "something with factor" or the like - but as I also said, I have absolutely no clue about R ... maybe this will change in the future but not for this thesis.. maybe then in my masters thesis ;) – Chilippso Oct 09 '21 at 14:02