Label readability in cluster dendogram

Hello everybody and thank you already for any kind of advide,

I managed to create a cluster dendogram for the dataset below and the following code.
d <-
dfTA_Custer %>%
select(-Name) %>%
dist(method = "euclidean")

hc <- hclust(d, method = "ward.D2")
plot(hc)
hc$labels <- df$Name
plot(hc)

However, due to the large number of labels (120), a readability is quite limited/impossible.
Is there any way to improve the label representation?

Thank you for any help!!!
data.frame(
stringsAsFactors = FALSE,
Name = c("NIED KUNSTSTOFF-TEXTIL",
"Nagel GmbH","BD SENSORS GmbH","TECHNOCHEM GMBH",
"Xaver Bosch","GEMA-Technik GmbH","Linker Industrie-Technik GmbH",
"Element Metech KDK GmbH","Heinzelmann GmbH",
"Intercontact GmbH","IAG GLUSKA GmbH ","AZS System AG",
"UM Electronic GmbH","Maprotec GmbH",
"CubiDesign Gehäuse GmbH","Q-BAT Oberflächen","Tucker GmbH","EMO Systems GmbH",
"EPN ELECTROPRINT GmbH","FOLA AbfĂĽlltechnik GmbH",
"YachtelektrONik Höppli","Vereinsbedarf Deitert GmbH",
"Haag Druck","Benz Alusysteme GmbH","B2B Hygiene e.Kfm",
"Peer-Span GmbH","ORDAT GmbH & Co. KG","Labomedic GmbH",
"Julius Blum GmbH","Nadella GmbH","RAMPF Technik",
"Ruhrbotics GmbH","m2m Germany GmbH","MABECO GmbH & Co. KG",
"System4all GmbH ","SAB Sägewerksanlagen GmbH",
"Fabian GmbH ","babp GmbH","Haas Sanitär","Ueberholz GmbH",
"WaBaCom GmbH","CSD Logistik Software GmbH",
"East-Tex GmbH","Eberspächer GmbH ","UGT 2000 GmbH",
"jafoplast GmbH","AAE Studio","SACCESS GmbH ",
"OBS Michalzik GmbH ","easyhyp GmbH ","MABEG Kreuschner","CEFIC",
"Gabory GmbH","Eberle Motoren GmbH","Saco Shipping GmbH",
"VRG CURAMUS GmbH","takuma OHG","Lace up! GmbH",
"Aagris e.K.","Quandos GmbH","KaBaKon GmbH ","Ebermetall",
"Napierala GmbH","Railpool GmbH","IB-AHW",
"UB-Mietservice","Factronix GmbH","123terrassendach","2K Boden UG",
"E + B Ingenieure","La Fit GmbH","Kakal Trucks",
"quindici GmbH","GALENUS","awikom gmbh","Vaillant GmbH",
"TAC TIC TOUR","370°- Die Agentur","HABIGHORST",
"Bach GmbH","Gallas GmbH","Mucambo-Gummi","Paehr GmbH",
"Radwelt MeĂźmer GmbH","Wakai GmbH",
"99SOUND Veranstaltungstechnik ","HĂ„HL GmbH","OFNET ","Oestert GmbH",
"Nature Fit GmbH","CairCompany GmbH","IBFA","Tabius",
"xNet GmbH","Gamegroup GmbH","atech innovations gmbh",
"UCDplus GmbH","Leicht Bags","Julius Blum GmbH",
"Oberland Holzhaus GmbH","10Bar-Style","Hennig GmbH","Q-CAD Design",
"S-Factoring GmbH","w3logistics AG","CAMA Lift GmbH",
"XelaNed GmbH","Gubesch GmbH","PAPSTAR GmbH",
"U2T Photonics AG","beic Ident GmbH","TAWI GmbH",
"Velcro GmbH ","famacs e. K.","Lanthan","Delta-Temp GmbH",
"SaM Adviser e.K.","Jacobsen GmbH","Elpress GmbH",
"Ambiance GmbH"),
Mean = c(1955529.2,244641.2,40819.8,
456718.8,863575.6,81800,1103067.8,11712239.2,
1057787.4,95669.4,11828,185047.6,155240.8,1241528,1077379.2,
4904564,3471640.2,2498187.6,3759132.2,1386033.6,
11637825.6,4577810.6,3042800.8,2112634,835106.4,
1681159.4,10309558.8,7139101.2,673926.6,3025984,4910684,
7179648,621316.4,4933120.4,3817800.4,2594441.8,
2177214.4,46349.2,6736464.6,2872603,8062460.8,8227847.8,
22122665.8,527718.4,2655032.8,2742295.8,4057404.75,
13718845,16126259.6,1177211.6,7329490,57277968.2,
6094117.6,148296,4580801.4,1996697.4,2011802.2,1875341,
10509798.4,3297069.8,612623,10499716.2,3792765.6,
801321.4,2724881.2,966691,8011422,1453419.6,2350702.4,
4127440.8,2467893.8,2941509.4,2394226.8,2103114,
3259254.6,2206299.4,1919105.4,6903964.4,1326521,1114665.6,
3382794.4,252781.8,888977.4,2776963.4,1501363.4,
1062649.8,3548382.2,2418269.8,3251128.8,10050039.8,
8207159.2,533333,298586.8,4838500.2,5414667.2,799128.2,
1205889.8,30428.6,2788987.8,1810968.8,687463.8,
1417203.6,9485277,2065358.6,6078455,1998272.6,2858558.2,
902339.2,408664,1666635,1349343.2,1412035.6,
285909.8,191147.4,1140255,483997.4,1686737.8,1277244.8,
221749.6,1490119.4)
)

Why not make a table containing each name and the assigned cluster number?

Changing the orientation provides some relief. With the reprex zoom the image to full screen size. It's still crowded. Selection of a lighter font will work and it may also be possible to reduce font size, but that comes at the expense of legibility. Finer grained control is possible with the {ggdendro} package, which allows the extensive formatting tools of {ggplot2} but the same legibility challenges remain.

For that reason, I would use an unlabeled plot as a key map. Since one of the top branches has a single label it doesn't need a detail diagram. Showing the two second level graphs separately probably keeps everything visible.

d <- data.frame(
  stringsAsFactors = FALSE,
  Name = c(
    "NIED KUNSTSTOFF-TEXTIL",
    "Nagel GmbH", "BD SENSORS GmbH", "TECHNOCHEM GMBH",
    "Xaver Bosch", "GEMA-Technik GmbH", "Linker Industrie-Technik GmbH",
    "Element Metech KDK GmbH", "Heinzelmann GmbH",
    "Intercontact GmbH", "IAG GLUSKA GmbH ", "AZS System AG",
    "UM Electronic GmbH", "Maprotec GmbH",
    "CubiDesign Gehäuse GmbH", "Q-BAT Oberflächen", "Tucker GmbH", "EMO Systems GmbH",
    "EPN ELECTROPRINT GmbH", "FOLA AbfĂĽlltechnik GmbH",
    "YachtelektrONik Höppli", "Vereinsbedarf Deitert GmbH",
    "Haag Druck", "Benz Alusysteme GmbH", "B2B Hygiene e.Kfm",
    "Peer-Span GmbH", "ORDAT GmbH & Co. KG", "Labomedic GmbH",
    "Julius Blum GmbH", "Nadella GmbH", "RAMPF Technik",
    "Ruhrbotics GmbH", "m2m Germany GmbH", "MABECO GmbH & Co. KG",
    "System4all GmbH ", "SAB Sägewerksanlagen GmbH",
    "Fabian GmbH ", "babp GmbH", "Haas Sanitär", "Ueberholz GmbH",
    "WaBaCom GmbH", "CSD Logistik Software GmbH",
    "East-Tex GmbH", "Eberspächer GmbH ", "UGT 2000 GmbH",
    "jafoplast GmbH", "AAE Studio", "SACCESS GmbH ",
    "OBS Michalzik GmbH ", "easyhyp GmbH ", "MABEG Kreuschner", "CEFIC",
    "Gabory GmbH", "Eberle Motoren GmbH", "Saco Shipping GmbH",
    "VRG CURAMUS GmbH", "takuma OHG", "Lace up! GmbH",
    "Aagris e.K.", "Quandos GmbH", "KaBaKon GmbH ", "Ebermetall",
    "Napierala GmbH", "Railpool GmbH", "IB-AHW",
    "UB-Mietservice", "Factronix GmbH", "123terrassendach", "2K Boden UG",
    "E + B Ingenieure", "La Fit GmbH", "Kakal Trucks",
    "quindici GmbH", "GALENUS", "awikom gmbh", "Vaillant GmbH",
    "TAC TIC TOUR", "370°- Die Agentur", "HABIGHORST",
    "Bach GmbH", "Gallas GmbH", "Mucambo-Gummi", "Paehr GmbH",
    "Radwelt MeĂźmer GmbH", "Wakai GmbH",
    "99SOUND Veranstaltungstechnik ", "HĂ„HL GmbH", "OFNET ", "Oestert GmbH",
    "Nature Fit GmbH", "CairCompany GmbH", "IBFA", "Tabius",
    "xNet GmbH", "Gamegroup GmbH", "atech innovations gmbh",
    "UCDplus GmbH", "Leicht Bags", "Julius Blum GmbH",
    "Oberland Holzhaus GmbH", "10Bar-Style", "Hennig GmbH", "Q-CAD Design",
    "S-Factoring GmbH", "w3logistics AG", "CAMA Lift GmbH",
    "XelaNed GmbH", "Gubesch GmbH", "PAPSTAR GmbH",
    "U2T Photonics AG", "beic Ident GmbH", "TAWI GmbH",
    "Velcro GmbH ", "famacs e. K.", "Lanthan", "Delta-Temp GmbH",
    "SaM Adviser e.K.", "Jacobsen GmbH", "Elpress GmbH",
    "Ambiance GmbH"
  ),
  Mean = c(
    1955529.2, 244641.2, 40819.8,
    456718.8, 863575.6, 81800, 1103067.8, 11712239.2,
    1057787.4, 95669.4, 11828, 185047.6, 155240.8, 1241528, 1077379.2,
    4904564, 3471640.2, 2498187.6, 3759132.2, 1386033.6,
    11637825.6, 4577810.6, 3042800.8, 2112634, 835106.4,
    1681159.4, 10309558.8, 7139101.2, 673926.6, 3025984, 4910684,
    7179648, 621316.4, 4933120.4, 3817800.4, 2594441.8,
    2177214.4, 46349.2, 6736464.6, 2872603, 8062460.8, 8227847.8,
    22122665.8, 527718.4, 2655032.8, 2742295.8, 4057404.75,
    13718845, 16126259.6, 1177211.6, 7329490, 57277968.2,
    6094117.6, 148296, 4580801.4, 1996697.4, 2011802.2, 1875341,
    10509798.4, 3297069.8, 612623, 10499716.2, 3792765.6,
    801321.4, 2724881.2, 966691, 8011422, 1453419.6, 2350702.4,
    4127440.8, 2467893.8, 2941509.4, 2394226.8, 2103114,
    3259254.6, 2206299.4, 1919105.4, 6903964.4, 1326521, 1114665.6,
    3382794.4, 252781.8, 888977.4, 2776963.4, 1501363.4,
    1062649.8, 3548382.2, 2418269.8, 3251128.8, 10050039.8,
    8207159.2, 533333, 298586.8, 4838500.2, 5414667.2, 799128.2,
    1205889.8, 30428.6, 2788987.8, 1810968.8, 687463.8,
    1417203.6, 9485277, 2065358.6, 6078455, 1998272.6, 2858558.2,
    902339.2, 408664, 1666635, 1349343.2, 1412035.6,
    285909.8, 191147.4, 1140255, 483997.4, 1686737.8, 1277244.8,
    221749.6, 1490119.4
  )
)

# fix an entry with trailing white space
d$Name <- trimws(d$Name)

dend <-dist(d$Mean,method = "euclidean")
hc <- hclust(dend, method = "ward.D2")
hc$labels <- d$Name
plot(hc,horiz=TRUE)
#> Warning in graphics:::plotHclust(n1, merge, height, order(x$order), hang, :
#> "horiz" is not a graphical parameter

#> Warning in graphics:::plotHclust(n1, merge, height, order(x$order), hang, :
#> "horiz" is not a graphical parameter
#> Warning in axis(2, at = pretty(range(height)), ...): "horiz" is not a graphical
#> parameter
#> Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
#> "horiz" is not a graphical parameter
d <- data.frame(
  stringsAsFactors = FALSE,
  Name = c(
    "NIED KUNSTSTOFF-TEXTIL",
    "Nagel GmbH", "BD SENSORS GmbH", "TECHNOCHEM GMBH",
    "Xaver Bosch", "GEMA-Technik GmbH", "Linker Industrie-Technik GmbH",
    "Element Metech KDK GmbH", "Heinzelmann GmbH",
    "Intercontact GmbH", "IAG GLUSKA GmbH ", "AZS System AG",
    "UM Electronic GmbH", "Maprotec GmbH",
    "CubiDesign Gehäuse GmbH", "Q-BAT Oberflächen", "Tucker GmbH", "EMO Systems GmbH",
    "EPN ELECTROPRINT GmbH", "FOLA AbfĂĽlltechnik GmbH",
    "YachtelektrONik Höppli", "Vereinsbedarf Deitert GmbH",
    "Haag Druck", "Benz Alusysteme GmbH", "B2B Hygiene e.Kfm",
    "Peer-Span GmbH", "ORDAT GmbH & Co. KG", "Labomedic GmbH",
    "Julius Blum GmbH", "Nadella GmbH", "RAMPF Technik",
    "Ruhrbotics GmbH", "m2m Germany GmbH", "MABECO GmbH & Co. KG",
    "System4all GmbH ", "SAB Sägewerksanlagen GmbH",
    "Fabian GmbH ", "babp GmbH", "Haas Sanitär", "Ueberholz GmbH",
    "WaBaCom GmbH", "CSD Logistik Software GmbH",
    "East-Tex GmbH", "Eberspächer GmbH ", "UGT 2000 GmbH",
    "jafoplast GmbH", "AAE Studio", "SACCESS GmbH ",
    "OBS Michalzik GmbH ", "easyhyp GmbH ", "MABEG Kreuschner", "CEFIC",
    "Gabory GmbH", "Eberle Motoren GmbH", "Saco Shipping GmbH",
    "VRG CURAMUS GmbH", "takuma OHG", "Lace up! GmbH",
    "Aagris e.K.", "Quandos GmbH", "KaBaKon GmbH ", "Ebermetall",
    "Napierala GmbH", "Railpool GmbH", "IB-AHW",
    "UB-Mietservice", "Factronix GmbH", "123terrassendach", "2K Boden UG",
    "E + B Ingenieure", "La Fit GmbH", "Kakal Trucks",
    "quindici GmbH", "GALENUS", "awikom gmbh", "Vaillant GmbH",
    "TAC TIC TOUR", "370°- Die Agentur", "HABIGHORST",
    "Bach GmbH", "Gallas GmbH", "Mucambo-Gummi", "Paehr GmbH",
    "Radwelt MeĂźmer GmbH", "Wakai GmbH",
    "99SOUND Veranstaltungstechnik ", "HĂ„HL GmbH", "OFNET ", "Oestert GmbH",
    "Nature Fit GmbH", "CairCompany GmbH", "IBFA", "Tabius",
    "xNet GmbH", "Gamegroup GmbH", "atech innovations gmbh",
    "UCDplus GmbH", "Leicht Bags", "Julius Blum GmbH",
    "Oberland Holzhaus GmbH", "10Bar-Style", "Hennig GmbH", "Q-CAD Design",
    "S-Factoring GmbH", "w3logistics AG", "CAMA Lift GmbH",
    "XelaNed GmbH", "Gubesch GmbH", "PAPSTAR GmbH",
    "U2T Photonics AG", "beic Ident GmbH", "TAWI GmbH",
    "Velcro GmbH ", "famacs e. K.", "Lanthan", "Delta-Temp GmbH",
    "SaM Adviser e.K.", "Jacobsen GmbH", "Elpress GmbH",
    "Ambiance GmbH"
  ),
  Mean = c(
    1955529.2, 244641.2, 40819.8,
    456718.8, 863575.6, 81800, 1103067.8, 11712239.2,
    1057787.4, 95669.4, 11828, 185047.6, 155240.8, 1241528, 1077379.2,
    4904564, 3471640.2, 2498187.6, 3759132.2, 1386033.6,
    11637825.6, 4577810.6, 3042800.8, 2112634, 835106.4,
    1681159.4, 10309558.8, 7139101.2, 673926.6, 3025984, 4910684,
    7179648, 621316.4, 4933120.4, 3817800.4, 2594441.8,
    2177214.4, 46349.2, 6736464.6, 2872603, 8062460.8, 8227847.8,
    22122665.8, 527718.4, 2655032.8, 2742295.8, 4057404.75,
    13718845, 16126259.6, 1177211.6, 7329490, 57277968.2,
    6094117.6, 148296, 4580801.4, 1996697.4, 2011802.2, 1875341,
    10509798.4, 3297069.8, 612623, 10499716.2, 3792765.6,
    801321.4, 2724881.2, 966691, 8011422, 1453419.6, 2350702.4,
    4127440.8, 2467893.8, 2941509.4, 2394226.8, 2103114,
    3259254.6, 2206299.4, 1919105.4, 6903964.4, 1326521, 1114665.6,
    3382794.4, 252781.8, 888977.4, 2776963.4, 1501363.4,
    1062649.8, 3548382.2, 2418269.8, 3251128.8, 10050039.8,
    8207159.2, 533333, 298586.8, 4838500.2, 5414667.2, 799128.2,
    1205889.8, 30428.6, 2788987.8, 1810968.8, 687463.8,
    1417203.6, 9485277, 2065358.6, 6078455, 1998272.6, 2858558.2,
    902339.2, 408664, 1666635, 1349343.2, 1412035.6,
    285909.8, 191147.4, 1140255, 483997.4, 1686737.8, 1277244.8,
    221749.6, 1490119.4
  )
)

# fix an entry with trailing white space
d$Name <- trimws(d$Name)

dend <-dist(d$Mean,method = "euclidean")
hc <- hclust(dend, method = "ward.D2")
hc$labels <- d$Name
plot(hc,horiz=TRUE)
#> Warning in graphics:::plotHclust(n1, merge, height, order(x$order), hang, :
#> "horiz" is not a graphical parameter

#> Warning in graphics:::plotHclust(n1, merge, height, order(x$order), hang, :
#> "horiz" is not a graphical parameter
#> Warning in axis(2, at = pretty(range(height)), ...): "horiz" is not a graphical
#> parameter
#> Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
#> "horiz" is not a graphical parameter

Created on 2023-03-24 with reprex v2.0.2

Created on 2023-03-24 with reprex v2.0.2

Thank you both very much for your immediate answer and advice!
Your solution paths both solve the problem in an easy way :slight_smile:

Thank you very much again!

Thank you both very much for your immediate answer and advice!
Your solution paths both solve the problem in an easy way :slight_smile:

Thank you very much again!

1 Like

This topic was automatically closed 42 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.