Ordination diagrams of the vegetation data showing the effect of habitat on species composition (A, C) and that of habitat × bedrock interaction (B, D) separately for herbs (including grasses; top panels A, B) and shrubs (bottom panels C, D). The models with herb species as responses (A, B) were created using the linear method (RDA), while the ordinations with shrubs as responses (C, D) were created using the unimodal models. Species codes: AbutFrut—Abutilon fruticosum, AcacSwas—Acacia swasica, AcalIndc—Acalypha indica, AcalpSp—Acalypha sp., AcanHisp—Acanthospermum hispidum, AdeniSp—Adenium sp., AlbzHarv—Albizia harveyi, AltrPung—Alternanthera pungens, AmarPrae—Amaranthus praetermissus, AsprSetc—Asparagus setaceus, BlepAcan—Blepharis acanthoides, BoscFoet—Boscia foetida, BothRadc—Bothriochloa radicans, BracNigr—Brachiaria nigropedata, BridMicr—Bridelia micrantha, CappTomn—Capparis tomentosa, CissCorn—Cissus cornifolia, CissRotn—C. rotundifolia, CoccHirs—Cocculus hirsutus, CombApic—Combretum apiculatum, CombMoss—C. mossambicense, CombZeyh—C. zeyheri, CommAfrc—Commiphora africana, CommErec—Commelina erecta, CommPlum—Commicarpus plumbagineus, CorbDecm—Corbichonia decumbens, CorcAspl—Corchorus aspleniifolius, CrotMeg—Croton megalobotrys, CucmHirs—Cucumis hirsutus, CyprRups—Cyperus rupestris, DigtEria—Digitaria eriantha, DigtMond—D. monodactyla, DihtAmpl—Diheteropogon amplectens, DiosMesp—Diospyros mespillifera, DyscRodg—Dyschoriste rodgersii, EleaTran—Eleaeodendron transvaalense, EragBicl—Eragrostis bicolor, EriMacGl—Eriospermum mackenii subsp. galpinii, EuclNatl—Euclaea natalensis, GardForn—Gardenia foranense, GompCels—Gomphrena celosioides, GossHerb—Gossipium herbaceum, GrewBicl—Grewia bicolor, GrewCaff—G. caffra, GrewFlav—G. flavescens, GrewHexm—G. hexamita, GymnSp—Gymnosporia sp., HibisSp—Hibiscus sp., HibsCalp—H. calyphyllus, HibsSidf—H. sidiformis, HippCren—Hippocratea crenata, HyphPetr—Hyphaene petersiana, JatrZeih—Jatropha zeiheri, JustFlav—Justicia flava, LeucGlab—Leucas glabrata, LippJavn—Lippia javanica, MelhPros—Melhania prostrata, MundSerc—Mundulea sericea, OccGrtGr—Occimum gratissimum var. gratissimum, OchnIner—Ochna inermis, OpunStrc—Opuntia stricta, OrmcTric—Ormocarpum trichocarpum, OropTenl—Oropetium tenellus, PancColr—Panicum coloratum, PartHyst—Parthenium hysterophorus, PeltAfrc—Peltophorum africanum, PhilViol—Philenoptera violacea, PhylAspr—Phyllanthus asperulatus, PhylIncr—P. incurvus, PhylRetc—P. reticulatus, PognSqua—Pogonarthria squarrosa, PterRotn—Pterocarpus rotundifolius, PyrsHyst—Pyrostria hystrix, RhusGuin—Rhus guinense, SearPent—Searsia penthriri, SporCons—Sporolobus consimilis, StylFrut—Stylosanthes fruticosa, TephPurp—Tephrosia purpurea, TermPrun—Terminalia prunoides, TermSerc—T. sericea, ThemTria—Themeda triandra, TricGlan—Tricliceras glanduliferum, UrocOlig—Urochloa oligotricha, XimnAmer—Ximenia americana, XimnCaff—X. caffra, XysmInvl—Xysmalobium involucratum, ZizpMucr—Ziziphus mucronata.