Próbuję obrócić etykiety osi X o 45 stopni na wykresie słupkowym bez powodzenia. Oto kod, który mam poniżej:
barplot(((data1[,1] - average)/average) * 100,
srt = 45,
adj = 1,
xpd = TRUE,
names.arg = data1[,2],
col = c("#3CA0D0"),
main = "Best Lift Time to Vertical Drop Ratios of North American Resorts",
ylab = "Normalized Difference",
yaxt = 'n',
cex.names = 0.65,
cex.lab = 0.65)
beside = TRUE
, prawdopodobnie będziesz chciał użyćcolMeans(x)
zamiastx
tylko jednej etykiety na grupę.użyj opcjonalnego parametru las = 2.
barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)
źródło
Obróć etykiety osi X o kąt równy lub mniejszy niż 90 stopni, używając grafiki podstawowej. Kod dostosowany z R FAQ :
par(mar = c(7, 4, 2, 2) + 0.2) #add room for the rotated labels #use mtcars dataset to produce a barplot with qsec colum information mtcars = mtcars[with(mtcars, order(-qsec)), ] #order mtcars data set by column "qsec" end_point = 0.5 + nrow(mtcars) + nrow(mtcars) - 1 #this is the line which does the trick (together with barplot "space = 1" parameter) barplot(mtcars$qsec, col = "grey50", main = "", ylab = "mtcars - qsec", ylim = c(0,5 + max(mtcars$qsec)), xlab = "", space = 1) #rotate 60 degrees (srt = 60) text(seq(1.5, end_point, by = 2), par("usr")[3]-0.25, srt = 60, adj = 1, xpd = TRUE, labels = paste(rownames(mtcars)), cex = 0.65)
źródło
Możesz po prostu przekazać ramkę danych do następującej funkcji :
rotate_x <- function(data, column_to_plot, labels_vec, rot_angle) { plt <- barplot(data[[column_to_plot]], col='steelblue', xaxt="n") text(plt, par("usr")[3], labels = labels_vec, srt = rot_angle, adj = c(1.1,1.1), xpd = TRUE, cex=0.6) }
Stosowanie:
rotate_x(mtcars, 'mpg', row.names(mtcars), 45)
W razie potrzeby można zmienić kąt obrotu etykiet.
źródło
Możesz użyć
par(las=2) # make label text perpendicular to axis
Jest napisane tutaj: http://www.statmethods.net/graphs/bar.html
źródło
Możesz użyć ggplot2, aby obrócić etykietę osi X, dodając dodatkową warstwę
theme(axis.text.x = element_text(angle = 90, hjust = 1))
źródło
Odpowiedź Andre Silvy działa dla mnie świetnie, z jednym zastrzeżeniem w wierszu „barplot”:
barplot(mtcars$qsec, col="grey50", main="", ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)), xlab = "", xaxt = "n", space=1)
Zwróć uwagę na argument „xaxt”. Bez tego etykiety są rysowane dwukrotnie, po raz pierwszy bez obrotu o 60 stopni.
źródło
W dokumentacji Wykresów słupkowych możemy przeczytać o dodatkowych parametrach (
...
), które można przekazać do wywołania funkcji:... arguments to be passed to/from other methods. For the default method these can include further arguments (such as axes, asp and main) and graphical parameters (see par) which are passed to plot.window(), title() and axis.
W dokumentacji parametrów graficznych (dokumentacji
par
) możemy zobaczyć:las numeric in {0,1,2,3}; the style of axis labels. 0: always parallel to the axis [default], 1: always horizontal, 2: always perpendicular to the axis, 3: always vertical. Also supported by mtext. Note that string/character rotation via argument srt to par does not affect the axis labels.
Dlatego
las=2
właściwą odpowiedzią jest podanie .źródło