Jak powinienem przedstawić mały wykres w rogu innej działki w R?Rysowanie wykresu w rogu innego
Odpowiedz
robiłem to przy użyciu coś takiego:
# Making some fake data
plot1 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
plot2 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
plot3 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
layout(matrix(c(2,1,1,3,1,1),2,3,byrow=TRUE))
plot(plot1$x,plot1$y)
plot(plot2$x,plot2$y)
plot(plot3$x,plot3$y)
W matrix
i layout
polecenia pozwoli Ci zorganizować wielu wykresów na jednym wykresie. Zasadniczo, umieścisz numer każdej działki (w kolejności, w którą ją nazwiesz) w każdej komórce, a następnie, niezależnie od tego, jaki układ zostanie zakończony, to w jaki sposób twoje wątki są ułożone. Na przykład, w przypadku powyżej, matrix(c(2,1,1,3,1,1),byrow=TRUE)
wyniki w matrycy, która wygląda następująco:
[,1] [,2] [,3]
[1,] 2 1 1
[2,] 3 1 1
Tak można skończyć z czymś takim:
EDITED dodać:
OK, więc jeśli chcesz zintegrować działkę w rogu, możesz to zrobić za pomocą tego samego polecenia layout
, po prostu zmieniając matrycę. Na przykład, to jest inny kod:
layout(matrix(c(1,1,2,1,1,1),2,3,byrow=TRUE))
plot1 <- data.frame(x=1:10,y=c(9,10,8,7,3,4,1,2,5,6))
plot2 <- data.frame(x=1:10,y=c(6,7,5,1,2,8,3,10,9,4))
plot(plot1$x,plot1$y,type="o",col="red")
plot(plot2$x,plot2$y,type="o",xlab="",ylab="",main="",sub="",col="blue")
i otrzymaną macierz:
[,1] [,2] [,3]
[1,] 1 1 2
[2,] 1 1 1
Działka że wychodzi wygląda następująco:
@ TAReham dziękuje i czy chcę niewielki spisek w innym? –
@TAReham na przykład na niewielką działkę tylko w środku innej działki? –
Edytowano odpowiedź, aby pokazać alternatywę. – TARehman
wiem, to pytanie jest już zamknięty, ale wyrzucam ten przykład dla potomności.
Możesz zrobić niestandardowe wizualizacje tak łatwo z podstawowym pakietem "siatkowym", gdy tylko uzyskasz podstawowe informacje. Oto krótki przykład niektórych niestandardowych funkcji, których używam wraz z demonstracją wykresów danych.
niestandardowe funkcje
# Function to initialize a plotting area.
init_Plot <- function(
.df,
.x_Loc,
.y_Loc,
.justify,
.width,
.height
){
# Initialize plotting area to fit data.
# We have to turn off clipping to make it
# easy to plot the labels around the plot.
pushViewport(viewport(xscale=c(min(.df[,1]), max(.df[,1])), yscale=c(min(0,min(.df[,-1])), max(.df[,-1])), x=.x_Loc, y=.y_Loc, width=.width, height=.height, just=.justify, clip="off", default.units="npc"))
# Color behind text.
grid.rect(x=0, y=0, width=unit(axis_CEX, "lines"), height=1, default.units="npc", just=c("right", "bottom"), gp=gpar(fill=space_Background, col=space_Background))
grid.rect(x=0, y=1, width=1, height=unit(title_CEX, "lines"), default.units="npc", just=c("left", "bottom"), gp=gpar(fill=space_Background, col=space_Background))
# Color in the space.
grid.rect(gp=gpar(fill=chart_Fill, col=chart_Col))
}
# Function to finalize and label a plotting area.
finalize_Plot <- function(
.df,
.plot_Title
){
# Label plot using the internal reference
# system, instead of the parent window, so
# we always have perfect placement.
grid.text(.plot_Title, x=0.5, y=1.05, just=c("center","bottom"), rot=0, default.units="npc", gp=gpar(cex=title_CEX))
grid.text(paste(names(.df)[-1], collapse=" & "), x=-0.05, y=0.5, just=c("center","bottom"), rot=90, default.units="npc", gp=gpar(cex=axis_CEX))
grid.text(names(.df)[1], x=0.5, y=-0.05, just=c("center","top"), rot=0, default.units="npc", gp=gpar(cex=axis_CEX))
# Finalize plotting area.
popViewport()
}
# Function to plot a filled line chart of
# the data in a data frame. The first column
# of the data frame is assumed to be the
# plotting index, with each column being a
# set of y-data to plot. All data is assumed
# to be numeric.
plot_Line_Chart <- function(
.df,
.x_Loc,
.y_Loc,
.justify,
.width,
.height,
.colors,
.plot_Title
){
# Initialize plot.
init_Plot(.df, .x_Loc, .y_Loc, .justify, .width, .height)
# Calculate what value to use as the
# return for the polygons.
y_Axis_Min <- min(0, min(.df[,-1]))
# Plot each set of data as a polygon,
# so we can fill it in with color to
# make it easier to read.
for (i in 2:ncol(.df)){
grid.polygon(x=c(min(.df[,1]),.df[,1], max(.df[,1])), y=c(y_Axis_Min,.df[,i], y_Axis_Min), default.units="native", gp=gpar(fill=.colors[i-1], col=.colors[i-1], alpha=1/ncol(.df)))
}
# Draw plot axes.
grid.lines(x=0, y=c(0,1), default.units="npc")
grid.lines(x=c(0,1), y=0, default.units="npc")
# Finalize plot.
finalize_Plot(.df, .plot_Title)
}
kod Demo
grid.newpage()
# Specify main chart options.
chart_Fill = "lemonchiffon"
chart_Col = "snow3"
space_Background = "white"
title_CEX = 1.4
axis_CEX = 1
plot_Line_Chart(data.frame(time=1:1860, EuStockMarkets)[1:5], .x_Loc=1, .y_Loc=0, .just=c("right","bottom"), .width=0.9, .height=0.9, c("dodgerblue", "deeppink", "green", "red"), "EU Stocks")
# Specify sub-chart options.
chart_Fill = "lemonchiffon"
chart_Col = "snow3"
space_Background = "lemonchiffon"
title_CEX = 0.8
axis_CEX = 0.7
for (i in 1:4){
plot_Line_Chart(data.frame(time=1:1860, EuStockMarkets)[c(1,i + 1)], .x_Loc=0.15*i, .y_Loc=0.8, .just=c("left","top"), .width=0.1, .height=0.1, c("dodgerblue", "deeppink", "green", "red")[i], "EU Stocks")
}
Wow. To zdecydowanie sprawia, że moja odpowiedź wygląda dość słabo w porównaniu. :) – TARehman
@TARehman Główną różnicą jest jednak to, że metoda 'par' w twojej odpowiedzi może akceptować podstawowe funkcje kreślenia, podczas gdy metoda 'grid' będzie wymagać określenia własnych metod kreślenia. To głównie kwestia czasu i tego, jak spersonalizowany musi być twój spisek. – Dinre
Pytanie nie jest zamknięte, a OP na pewno ma możliwość zmiany wyboru, która odpowiedź otrzyma znacznik wyboru. – Dason
Można również użyć par(fig=..., new=TRUE)
.
x <- rnorm(100)
hist(x, col = "light blue")
par(fig = c(.7, .95, .7, .95), mar=.1+c(0,0,0,0), new = TRUE)
qqnorm(x, axes=FALSE, xlab="", ylab="", main="")
qqline(x, col="blue", lwd=2)
box()
Bardzo lubię tę opcję, ponieważ jest to prostota i możliwość korzystania z podstawowych funkcji drukowania. Będąc użytkownikiem sieci, sam nie mam z niego pożytku, ale muszę o tym pamiętać dla innych, którzy o to pytają. Dzięki za wskazanie tego. – Dinre
subplot
funkcja w pakiecie TeachingDemos robi dokładnie to grafiki bazowych.
Utwórz pełnowymiarowy wykres, a następnie zadzwoń pod numer subplot
za pomocą polecenia drukowania, które ma znajdować się w obszarze pomocniczym, i określ położenie podpoziomu. Lokalizację można określić za pomocą słowa kluczowego, np. "Topleft", lub podać współrzędne w bieżącym układzie współrzędnych użytkownika działki.
- 1. Rysowanie prostego wykresu na iPhonie
- 2. Rysowanie wykresu z ważonymi krawędziami
- 3. Rysowanie wykresu rozrzutu z IOS Coreplot
- 4. Rysowanie wykresu lub sieci z macierzy odległości?
- 5. Brzydkie rysowanie wykresu radarowego MS asp.net
- 6. rysowanie wykresu liniowego z pierwszą i drugą osią y C#
- 7. Rysowanie klastrowanych wykresów w Pythonie
- 8. rysowanie wykresu piramidy za pomocą R i ggplot2
- 9. Rysowanie prostokąta prostokątnego OpenGL
- 10. Android RelativeLayout wyrównanie środka jednego widoku w prawym górnym rogu innego widoku
- 11. Rysowanie prostokąta w UIView
- 12. Rysowanie wielokątów w Swift
- 13. Rysowanie 1-pikselowego wykresu szerokości obrysu na rysunku w formacie A4
- 14. Modelowanie wykresu w języku Python
- 15. Aktualizacja wykresu/wykresu w ustalonym przedziale czasu
- 16. Rysowanie trójkąta
- 17. Put JButton w prawym dolnym rogu
- 18. Pływający przycisk w prawym dolnym rogu Ionic2
- 19. Położenie formularza w prawym dolnym rogu ekranu
- 20. Google Maps Centres w lewym górnym rogu
- 21. Umieszczanie obrazu w prawym górnym rogu - CSS
- 22. Usuwanie efektu ukosowania w rogu granic
- 23. Wyrównanie ImageView w prawym górnym rogu ekranu
- 24. Pozycja WinForm w lewym dolnym rogu ekranu
- 25. zestaw ActionBarDrawerToggle na prawym rogu
- 26. Motywy: Rysowanie zależne od motywu?
- 27. Jak umieścić tekst w prawym górnym rogu lub prawym dolnym rogu "pudełka" za pomocą css
- 28. Rysowanie "otworów" w obszarze roboczym
- 29. Rysowanie krzywych Hermitów w OpenGL
- 30. Rysowanie drzew w Common Lisp
Z ggplot2, patrz ostatni przykład w '? Annotation_custom' – baptiste