Mam wykres z użyciem ggplot2, w którym chciałbym wiele znaczników wzdłuż osi X, ale tylko niektóre z tyknięć będą miały przypisane etykiety znaczników. Chciałbym jednak, aby znaczniki dla tych, którzy mają etykiety, były dłuższe niż te, które tego nie robią.ggplot2: Mają krótsze znaczniki dla znaczników bez znaczników
Odpowiedz
theme(axis.ticks.length)
http://docs.ggplot2.org/0.9.2.1/theme.html powinny być użyteczne.
Edytuj Przepraszamy, po prostu przeczytaj uważnie swoje pytanie. Czy te oznaczone etykietami są standardowymi kleszczami major.grid? lub oznakowane w jakiś niestandardowy sposób?
bazy B, można zahamować oś x z początkowym plot
rozmowy (z xaxt='n'
), a następnie za pomocą tcl
kontrolowania długości podziałki (patrz ?par
) z dwoma axis(1, ...)
połączeń.
plot(1:10, xaxt='n', ylab='', las=1)
axis(1, at=1:10, tcl=-0.8)
axis(1, at=seq(0, 11, 0.2), labels=NA)
Fajnie, ale OP poprosił o grafikę ggplot, a nie bazę R – smci
@smci Nie ma znaczenia, wciąż niesamowite. –
@scmi - Widziałem tag po tym, jak już napisałem (dobrym pomysłem jest uwzględnienie swoich kluczowych wymagań w poście). Bez względu na to, nie ma problemu z podstawowym rozwiązaniem R, ponieważ ludzie, którzy chcą korzystać z bazy, mogą natknąć się na to pytanie. – jbaums
Jest to łatwiejsze z grafiką bazowych, ale tutaj jest próbą używając ggplot2.
Metoda opiera się na this method, która wstawia puste etykiety do sekwencji etykiet (za pomocą kodu z tej odpowiedzi). Po tym, jak przerwy i etykiety będą na miejscu w ggplot, zagłębię się w strukturę działki, aby edytować długości znaczników. (Używaj z rozwagą, nie byłoby to trudne do złamania.)
library(ggplot2)
library(grid)
# Data
df = data.frame(x = 1:10, y = 1:10)
# Range of x values
range = 1:10
# Major tick marks
major = 1
# Minor tick marks
minor = 0.2
# Function to insert blank labels
# Borrowed from https://stackoverflow.com/questions/14490071/adding-minor-tick-marks-to-the-x-axis-in-ggplot2-with-no-labels/14490652#14490652
insert_minor <- function(major, n_minor) {
labs <- c(sapply(major, function(x, y) c(x, rep("", y)), y = round(n_minor)))
labs[1:(length(labs) - n_minor)]
}
# Getting the 'breaks' and 'labels' for the ggplot
n_minor = major/minor - 1
breaks = seq(min(range), max(range), minor)
labels = insert_minor(seq(min(range), max(range), major), n_minor)
if(length(breaks) > length(labels)) labels = c(labels, rep("", length(breaks) - length(labels)))
# The plot
p <- ggplot(df, aes(x = x, y = y)) +
geom_point() +
scale_x_continuous(breaks = breaks, labels = labels) +
coord_cartesian(xlim = range) +
theme_bw() +
theme(panel.grid = element_blank(),
axis.text.x = element_text(margin = margin(t = 5, unit = "pt")))
p
# Edit the plot:
# Change the lengths of the major tick marks
g = ggplotGrob(p)
# Get the x axis
xaxis <- g$grobs[[which(g$layout$name == "axis-b")]]
# Get the tick marks and tick mark labels
ticks <- xaxis$children[[2]]
# Get the tick marks
marks = ticks$grobs[[1]]
# Edit the y positions of the end points of the tick marks
# The '6' and the '3' in the code below
# are the lengths in pts of the major and minor tick marks respectively.
marks$y = unit.c(unit.c(unit(1, "npc") - unit(6, "pt"), unit(1, "npc"),
rep(unit.c(unit(1, "npc") - unit(3, "pt"), unit(1, "npc")), n_minor)))
# Put the tick marks back into the plot
ticks$grobs[[1]] = marks
xaxis$children[[2]] = ticks
g$grobs[[which(g$layout$name == "axis-b")]] = xaxis
# Draw the plot
grid.newpage()
grid.draw(g)
To zadziałało dla mnie. Poza tym zmieniam linię, w której zresetowałeś swoje znaczniki do następujących: 'marks $ y [seq (1, length (marks $ y), 2)] [- seq (1, length (marks $ y)/2, n_minor + 1)] <- unit (1, "npc") - unit (3, 'pt') ' W ten sposób powinieneś także ustawić' axis.ticks.length = unit (6, "pt") ' w temacie. – aaiezza
- 1. Python - Dodaj znaczniki ID3 do pliku mp3 bez znaczników
- 2. Znaczniki semantyczne HTML5 dla znaczników i kategorii postów na blogu
- 3. Parsowanie znaczników HTML
- 4. Oznaczenia kolorów znaczników matplotlib
- 5. regexp dla znaczników html z Matlabem
- 6. Hierarchie znaczników i obsługa
- 7. Tworzenie listy znaczników Anchor
- 8. Wyszukiwanie znaczników metadanych w Sharepoint
- 9. Matplotlib powoduje, że czcionki znaczników mają mniejszy rozmiar czcionki
- 10. CEDET: przechowywanie znaczników ręcznie
- 11. Ulotka: Dodaj link do znaczników
- 12. Wycinanie ciągów HTML bez łamania znaczników HTML
- 13. Linia przerwania po wprowadzeniu bez znaczników html
- 14. Atrybut zastępczy dla znaczników wejściowych dla IE?
- 15. tinyMCE Usuwanie znaczników MS Word
- 16. różne grupy znaczników w liściach
- 17. LXML - sortowanie znaczników Kolejność sortowania
- 18. Ukrywanie znaczników tytułów na hover
- 19. Google Map API - usuwanie znaczników
- 20. Legenda Matplotlib: etykiety powyżej znaczników
- 21. Narzędzie do testowania znaczników Schema.org
- 22. Używanie coord_flip() z facet_wrap (scales = "free_y") w ggplot2 wydaje się dawać nieoczekiwane znaczniki osi znacznika i etykiety znaczników
- 23. Kontynuuj kerning na granicach znaczników
- 24. Zmiana koloru osi, znaczników i etykiet dla wykresu w matplotlib
- 25. Klastry z Androidem i kliknięcia znaczników
- 26. Usuwanie znaczników HTML w łańcuchu
- 27. Zagnieżdżanie znaczników zakotwiczenia HTML
- 28. Receptura znaczników JSP
- 29. Używanie znaczników w Swift
- 30. Usuwanie znaczników Gmap.net
Są major.grid kleszcze, używając 'Theme (axis.ticks.length)' określi długość wszystkich kleszcze, nie tylko te z etykietami. – baisong