Alicja Z.

Alicja Z. Badania społeczne,
ewaluacyjne i
marketingowe

Temat: Jak zmienić domyślne wartości na wykresie?

Witajcie

Zmagam się z problemem zmiany domyślnych wartości na wykresie na własne. Wykres ma przedstawiać wyniki regresji kwantylowej (pakiet quantile). Obecnie ma taką postać:
plot(mój.obiekt, parm = 2, mar = c(5.1, 4.1, 2.1, 2.1), main = "", xlab = "", 
ylab = "", cex = 1, pch = 19)

Jedyne co udało mi się osiągnąć to wykres, na którym są moje i domyślne etykiety -
kombinowałam z funkcją
xaxt = "n"
i
axis(1, at=1:5, labels=x)
która powinna usunąć domyślne etykiety, ale tego nie robi. No i skapitulowałam.
Maciej B.

Maciej B. Doktorant

Temat: Jak zmienić domyślne wartości na wykresie?

Hej,

opisz dokładnie co chciałabyś uzyskać, a i dobrze jakbyś przygotowała przykładowe dane. Można np. zapoznać się z wymogami z forum stackoverflow.com - http://stackoverflow.com/questions/5963269/how-to-make...

Póki co, na tyle ile napisałaś, może poniższy kod coś pomoże. Przykład z helpa R.


plot(1:10, xaxt = "n")
axis(1, xaxp=c(3, 9, 6))


gdzie pierwszy argument oznacza początek (4), drugi koniec (9) a trzeci, że chcemy mieć 6 przerw (czyli co jeden), no i mamy domyślne etykiety.

Można też pobawić się w pakiecie ggplot2, który jest trochę przyjemniejszy od domyślnej grafiki.


library(ggplot2)
qplot(x=1:10,y=1:10) + scale_x_continuous(breaks=seq(1,10,by=2))


Mam nadzieję, że to pomoże.

Pozdrawiam,
MBMaciej B. edytował(a) ten post dnia 25.03.13 o godzinie 22:20
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Jak zmienić domyślne wartości na wykresie?

może spróbuj usunąć niepożądane element bezpośrednio z obiektu `mój.obiekt`, lub wstawić własne wartości w ich miejsce, gdyż `mój.obiekt` to zapewne zwykła lista z nadaną nazwą klasy, Możesz również rozebrać ten obiekt na kawałki i zrobić wykres tego co Cię interesuje wykonując wszystko ręcznie, gdyż `plot()` jest funkcją przeciążone dla klasy obiektu `mój.obiekt`, czyli tak naprawdę nie używasz tutaj funkcji `plot()` tylko funkcji `plot.klasa()`, gdzie
`klasa = class(mój.obiekt)`.

Pozdrawiam
Alicja Z.

Alicja Z. Badania społeczne,
ewaluacyjne i
marketingowe

Temat: Jak zmienić domyślne wartości na wykresie?

Witajcie
Dzięki za rady, ale niestety nie udało mi się rozwiązać problemu. Poniżej jest dokładny kod (czy można tu jakoś wstawić mój wykres w pdf?). To co chcę zrobić, to zastąpić domyślne etykiety na osi x własnymi.


library(quantreg)
fm <- rq(x ~ y, data = a, tau = c(.05,.25,.50,.75,.95))
fm
sfm <- summary(fm)
plot(sfm)
wykres<-plot(sfm, parm = 2, mar = c(5.1, 4.1, 2.1, 2.1), xlab = "", main="",xaxt = "n",
ylab = "", cex = 1, pch = 19, ols=TRUE, lcol="black", lty=2, border = "lightgrey")

#po dodaniu tego polecenia uzyskuje pożądane etykiety, ale mam też domyślne (w efekcie mam swoje i domyślne)
axis(1,at=c(0,0.1,0.3,0.5,0.7,0.9,1),lab=c("0","0.1","0.3","0.5","0.7","0.9","1"))


Pozdrawiam -a
Maciej B.

Maciej B. Doktorant

Temat: Jak zmienić domyślne wartości na wykresie?

Przyznam, że mam problem z tym aby zmienić etykiety na takie jakie chcesz. Można to obejść wyciągając dane i tworząc swój własny wykres. Własnie tak postąpiłem i wykorzystałem ggplot2. :)

Wykresy do pdf można zapisywać wykorzystując np. pakiet Cairo (funkcja CairoPDF).

Poniżej moja zabawa z przykładem z pakietu quantreg i wykorzystaniem ggplot2.


## ładuję pakiety
library(quantreg)
library(ggplot2) #grafika
library(scales) #parametr alpha do przenikania kolorów
library(Cairo) #zapis do pdf

## przykład z pakietu
taus<-c(.05,.25,.50,.75,.95)
data(engel)
model.fit<-rq(foodexp~income,data=engel,tau=taus)
sum.fit<-summary(model.fit)
str(sum.fit)

## wyciągam oszacowania
oszacowania<-rbind(cbind(sum.fit[[1]]$coefficients,taus[1]),
cbind(sum.fit[[2]]$coefficients,taus[2]),
cbind(sum.fit[[3]]$coefficients,taus[3]),
cbind(sum.fit[[4]]$coefficients,taus[4]),
cbind(sum.fit[[5]]$coefficients,taus[5]))

## zamiana na data.frame i nazw kolumn
oszacowania<-as.data.frame(oszacowania)
oszacowania$Parametr<-rownames(oszacowania)
names(oszacowania)<-c('Oszacowanie','GranicaDolna','GranicaGorna','Tau','Parametr')

## wykres w ggplot2 zapisany do pdf
CairoPDF(file='wykresQR.pdf')
ggplot(data=oszacowania,aes(x=Tau,y=Oszacowanie)) +
geom_ribbon(aes(ymin=GranicaDolna,ymax=GranicaGorna),fill='red',alpha=0.6) +
geom_line() +
facet_wrap(~Parametr,scales='free_y',ncol=1) +
scale_x_continuous(breaks=c(0,0.1,0.3,0.5,0.7,0.9,1)) +
theme_bw()
dev.off()


No i w tym momencie trzeba się pobawić z opcjami ggplot2 i CairoPDF (np. argumenty width, height).

Miłej zabawy :)

MBMaciej B. edytował(a) ten post dnia 29.03.13 o godzinie 23:00



Wyślij zaproszenie do