0

I am creating a circlepack graph using ggraph and want to be able to apply the fill aesthetic to my "from" column in my edges list. The problem I am running into is that after using graph_from_data_frame to merge the two dataframes into a list the column names no longer exist to use for aesthetics it seems.

This is the code I am using, the column name I want to use for fill is body_type.

outlier_graphtree_full <- graph_from_data_frame(circleplot_treeedge_full, vertices=circle_vertices_tree_full)

ggraph(outlier_graphtree_full, layout = 'circlepack', weight=count_vehicl_n_full_t) + 
  geom_node_circle(aes(fill = body_type, color = as.factor(depth))) +
  scale_color_manual(values=c("0" = "white", "1" = "black", "2" = "black", "3" = "black", "4"="black") ) +
  geom_node_label(aes(label=new_label), size=3.5, repel = TRUE, nudge_y = -2) +
  theme_void() + 
  theme(plot.margin = unit(rep(0,4), "cm"))+
  guides(color = FALSE)

Here are the outputs requested by Phil:

dput(circleplot_treeedge_full)

structure(list(body_type_full_t = c("rot", "rot", "rot", "rot", 
"rot", "rot", "rot", "rot", "SUV", "Sedan", "Coupe", "Sedan", 
"Hatchback", "SUV", "Coupe", "Sedan", "Sedan", "SUV", "SUV", 
"Coupe", "SUV", "Sedan", "SUV", "Sedan", "SUV", "Sedan", "Sedan", 
"Sedan", "Sedan", "SUV", "Sedan", "Hatchback", "Sedan", "SUV", 
"SUV", "Sedan", "SUV", "Hatchback", "Sedan", "SUV", "Sedan", 
"SUV", "Pickup Truck", "SUV", "SUV", "Station Wagon", "Sedan", 
"SUV", "Van", "SUV", "Coupe", "Pickup Truck", "SUV", "SUV", 
"SUV", "SUV", "SUV", "Sedan", "SUV", "Van", "SUV", "SUV", "SUV", 
"SUV", "SUV", "SUV", "Hatchback", "Sedan", "Minivan", "SUV", 
"SUV", "SUV", "SUV", "SUV", "Hatchback", "SUV", "SUV", "Van", 
"Sedan", "SUV", "Sedan", "Hatchback", "SUV", "Sedan", "SUV", 
"Hatchback", "SUV", "SUV", "Hatchback", "SUV", "Sedan", "Hatchback", 
"SUV", "SUV", "SUV", "SUV", "Pickup Truck", "SUV", "Sedan", 
"Sedan", "Hatchback", "SUV", "Sedan", "SUV", "SUV", "Pickup Truck", 
"Hatchback", "Hatchback", "Hatchback", "Sedan", "Hatchback", 
"Hatchback", "Hatchback", "Hatchback", "Sedan", "Hatchback", 
"SUV", "Hatchback", "Hatchback", "SUV", "Hatchback", "Hatchback", 
"Hatchback", "Hatchback", "Hatchback", "Hatchback", "Hatchback"
), model_full_t = c("SUV", "Sedan", "Coupe", "Hatchback", "Pickup Truck", 
"Station Wagon", "Van", "Minivan", "NX", "A3", "918", "FLYING SPUR", 
"PANAMERA", "BENTAYGA", "I8", "RS E-TRON GT", "S-CLASS", "RANGE ROVER SPORT", 
"RANGE ROVER", "ROADSTER", "E-TRON GT", "EQS-CLASS SEDAN", "EQS-CLASS SUV", 
"KARMA", "MODEL X", "A8 E", "745LE", "745E", "740E", "E-TRON SPORTBACK", 
"TAYCAN", "MODEL S", "AIR", "CAYENNE", "IX", "G80", "R1S", "A7", 
"CT6", "EQB-CLASS", "EQE-CLASS SEDAN", "E-TRON", "R1T", "I-PACE", 
"XC90", "V60", "S90", "AVIATOR", "EDV", "GLE-CLASS", "ELR", "F-150", 
"GRAND CHEROKEE", "GV60", "LYRIQ", "RZ 450E", "XC60", "530E", 
"Q5 E", "TRANSIT CONNECT ELECTRIC", "C40", "WRANGLER", "CORSAIR", 
"XC40", "GLC-CLASS", "X3", "I4", "S60", "PACIFICA", "RAV4 PRIME", 
"Q4", "IONIQ 5", "EV6", "X5", "PS2", "MODEL Y", "MUSTANG MACH-E", 
"TRANSIT", "330E", "SOLTERRA", "C-CLASS", "I3", "ARIYA", "IONIQ 6", 
"SANTA FE", "B-CLASS", "RAV4", "BZ4X", "CITY", "ESCAPE", "MODEL 3", 
"COUNTRYMAN", "OUTLANDER", "NIRO", "ID.4", "TUCSON", "RANGER", 
"SORENTO", "OPTIMA", "FUSION", "SOUL EV", "CROSSTREK", "CLARITY", 
"KONA ELECTRIC", "KONA", "S-10 PICKUP", "WHEEGO", "PRIUS PRIME", 
"E-GOLF", "ACCORD", "HARDTOP", "PRIUS PLUG-IN", "FOCUS", "FORTWO ELECTRIC DRIVE", 
"SONATA", "LEAF", "BOLT EUV", "VOLT", "BOLT EV", "SPORTAGE", 
"IONIQ", "C-MAX", "I-MIEV", "EQ FORTWO", "500", "FORTWO", "SPARK"
), count_vehicl_n_full_t = c(0, 0, 0, 0, 0, 0, 0, 0, 54, 575, 
1, 1, 122, 2, 93, 23, 11, 25, 16, 49, 89, 136, 111, 14, 4792, 
3, 2, 9, 26, 170, 472, 7399, 133, 341, 294, 6, 266, 11, 16, 82, 
22, 884, 1125, 222, 1139, 15, 27, 134, 221, 49, 70, 490, 299, 
48, 17, 10, 858, 376, 697, 7, 246, 2029, 74, 717, 192, 286, 436, 
111, 2139, 1274, 170, 1111, 1348, 1887, 648, 22078, 2140, 199, 
397, 167, 19, 1890, 62, 6, 77, 89, 59, 42, 3, 280, 25311, 199, 
646, 2525, 2397, 45, 14, 445, 105, 1834, 657, 64, 782, 432, 194, 
1, 3, 2456, 1035, 9, 529, 939, 250, 152, 76, 12961, 792, 4876, 
5335, 172, 203, 1536, 64, 56, 803, 68, 247)), class = "data.frame", row.names = c(NA, 
-127L))



    dput(circle_vertices_tree_full)

structure(list(model_full_t = c("SUV", "Sedan", "Coupe", "Hatchback", 
"Pickup Truck", "Station Wagon", "Van", "Minivan", "NX", "A3", 
"918", "FLYING SPUR", "PANAMERA", "BENTAYGA", "I8", "RS E-TRON GT", 
"S-CLASS", "RANGE ROVER SPORT", "RANGE ROVER", "ROADSTER", "E-TRON GT", 
"EQS-CLASS SEDAN", "EQS-CLASS SUV", "KARMA", "MODEL X", "A8 E", 
"745LE", "745E", "740E", "E-TRON SPORTBACK", "TAYCAN", "MODEL S", 
"AIR", "CAYENNE", "IX", "G80", "R1S", "A7", "CT6", "EQB-CLASS", 
"EQE-CLASS SEDAN", "E-TRON", "R1T", "I-PACE", "XC90", "V60", 
"S90", "AVIATOR", "EDV", "GLE-CLASS", "ELR", "F-150", "GRAND CHEROKEE", 
"GV60", "LYRIQ", "RZ 450E", "XC60", "530E", "Q5 E", "TRANSIT CONNECT ELECTRIC", 
"C40", "WRANGLER", "CORSAIR", "XC40", "GLC-CLASS", "X3", "I4", 
"S60", "PACIFICA", "RAV4 PRIME", "Q4", "IONIQ 5", "EV6", "X5", 
"PS2", "MODEL Y", "MUSTANG MACH-E", "TRANSIT", "330E", "SOLTERRA", 
"C-CLASS", "I3", "ARIYA", "IONIQ 6", "SANTA FE", "B-CLASS", "RAV4", 
"BZ4X", "CITY", "ESCAPE", "MODEL 3", "COUNTRYMAN", "OUTLANDER", 
"NIRO", "ID.4", "TUCSON", "RANGER", "SORENTO", "OPTIMA", "FUSION", 
"SOUL EV", "CROSSTREK", "CLARITY", "KONA ELECTRIC", "KONA", "S-10 PICKUP", 
"WHEEGO", "PRIUS PRIME", "E-GOLF", "ACCORD", "HARDTOP", "PRIUS PLUG-IN", 
"FOCUS", "FORTWO ELECTRIC DRIVE", "SONATA", "LEAF", "BOLT EUV", 
"VOLT", "BOLT EV", "SPORTAGE", "IONIQ", "C-MAX", "I-MIEV", "EQ FORTWO", 
"500", "FORTWO", "SPARK", "rot"), count_vehicl_n_full_t = c(0, 
0, 0, 0, 0, 0, 0, 0, 54, 575, 1, 1, 122, 2, 93, 23, 11, 25, 16, 
49, 89, 136, 111, 14, 4792, 3, 2, 9, 26, 170, 472, 7399, 133, 
341, 294, 6, 266, 11, 16, 82, 22, 884, 1125, 222, 1139, 15, 27, 
134, 221, 49, 70, 490, 299, 48, 17, 10, 858, 376, 697, 7, 246, 
2029, 74, 717, 192, 286, 436, 111, 2139, 1274, 170, 1111, 1348, 
1887, 648, 22078, 2140, 199, 397, 167, 19, 1890, 62, 6, 77, 89, 
59, 42, 3, 280, 25311, 199, 646, 2525, 2397, 45, 14, 445, 105, 
1834, 657, 64, 782, 432, 194, 1, 3, 2456, 1035, 9, 529, 939, 
250, 152, 76, 12961, 792, 4876, 5335, 172, 203, 1536, 64, 56, 
803, 68, 247, 0), level = c(2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1), new_label = c("SUV", "Sedan", 
"Coupe", "Hatchback", "Pickup Truck", "Station Wagon", "Van", 
"Minivan", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, 
-128L), class = "data.frame")
Phil
  • 7,287
  • 3
  • 36
  • 66
  • Please provide the output of `dput(circleplot_treeedge_full)` and `dput(circle_vertices_tree_full)` in order to reproduce the problem. – Phil Jun 21 '23 at 02:02
  • Hi Phil, I have added the outputs requested above. – Jacob Sorini Jun 21 '23 at 17:01
  • Try with using `level` instead of `body_type`. Also, `guides()` can't use logicals in their arguments, use `"none"` instead. – Phil Jun 21 '23 at 20:44
  • When using "level" for fill I get the error "Error: Continuous value supplied to discrete scale" – Jacob Sorini Jun 22 '23 at 01:43
  • I don't know what to tell you: https://i.imgur.com/DB33Fi7.png Maybe check that you have the latest versions of ggplot2, ggraph, and igraph. Or, makt it `as.factor(level)` – Phil Jun 22 '23 at 03:01

0 Answers0