Saya membuat plot di mana saya memplot variabel pada sumbu X terhadap sumbu Y, dan saya juga menambahkan histogram variabel. Saya telah menambahkan garis tren ke plot menggunakan abline()
.
Masalahnya adalah ia tampaknya tidak menghormati xlim = c(0, 20)
di wilayah plot karena melampaui batas sumbu x. Saya mencoba bermain-main dengan opsi xpd
, tetapi tidak berhasil. Selanjutnya saya mencoba mengutak-atik par()
options yang berbeda, tetapi tidak menemukan apa pun yang dapat membantu mengatasi masalah ini.
Yang saya inginkan adalah garis tren sama persis dengan panjang sumbu x. Bantuan apa pun sangat dihargai. Dalam kasus ini garis trennya hampir datar, namun kemiringannya akan berubah ketika saya melakukan hal yang sama untuk variabel lainnya.
MWE -- CATATAN: Saya hanya menyediakan 15 titik data untuk mengilustrasikan masalah sehingga grafiknya akan berbeda dengan gambar yang disediakan.
df.data <- data.frame(id = 1:15,
ll = c(-9.53026, -6.50640,-6.50640, -7.68535, -11.80899, -8.42790,
-6.50640, -6.50640, -7.92405, -6.50640, -8.95522, -9.99228,
-10.02286, -8.95969, -6.07313),
aspm = c(4.582104, 0.490244, 0.737765, 0.256699, 1.575931, 1.062693,
1.006984, 0.590355, 1.014370, 0.924855, 0.735989, 0.831025,
1.197886, 1.143220, 0.928068))
str.col.light.blue <- c(rgb(r = 110/255, g = 155/255, b = 225/255))
str.col.dark.blue <- c(rgb(r = 50/255, g = 100/255, b = 185/255))
layout(matrix(c(2, 4, 1, 3), 2, 2, byrow = TRUE), widths = c(5, 2), heights = c(2, 5))
layout.show(4)
par(omi = c(0.1, 0.1, 0.1, 0.1))
par(mar = c(2, 2, 0, 0))
par(mai = c(1, 1, 0, 0))
plot(df.data[, "ll"] ~ df.data[, "aspm"], col = str.col.light.blue,
xlim = c(0, 20), ylim = c(-15, -5), axes = FALSE,
xlab = "X1", ylab = "X2",
cex.lab = 1.25)
abline(a = -8.156670, b = -0.000879, lty = 5, col = "black", lwd = 2, xpd = FALSE)
axis(1, at = seq(0, 20, by = 5), labels = seq(0, 20, by = 5), cex.axis = 1)
axis(2, at = seq(-15, -5, by = 3), labels = seq(-15, -5, by = 3), cex.axis = 1, las = 1)
rect(0, -15, 20, log(1/3)*8, density = 10, angle = 45, lwd = 0.5, col = "gray")
par(mar = c(0, 2, 0, 0))
par(mai = c(0, 1, 0.25, 0))
x.hist <- hist(df.data[, "aspm"], plot = FALSE, breaks = 20)
barplot(x.hist$density, axes = FALSE, horiz = FALSE, space = 0, col = str.col.dark.blue)
par(mar = c(2, 0, 0, 0))
par(mai = c(1, 0, 0, 0.25))
y.hist <- hist(df.data[, "ll"], plot = FALSE, breaks = 20)
barplot(y.hist$density, axes = FALSE, horiz = TRUE, space = 0, col = str.col.dark.blue)
par(mfg)
menimbulkan kesalahan,Error in par(mfg = c(0, 0, 0, 0)) : invalid value specified for graphical parameter "mfg"
. Untuk pertanyaannya, mungkin Anda bisa menggunakansegments
daripadaabline
? - person Rui Barradas   schedule 05.09.2017par(mfg)
memang membuat kesalahan. Itu tidak terjadi ketika saya membuat MWE, tetapi ketika saya menjalankannya dalam sesi yang bersih, hal itu terjadi. Tampaknya tidak ada efek yang terlihat, jadi saya mengedit MWE dan menghapus baris ini. Sedangkan untuk menggunakansegments()
- itu mungkin. Namun, hal ini mengharuskan saya menentukan titik awal dan akhir garis. Sekarang mudah karena garis trennya datar, tetapi ketika kemiringannya berubah, saya harus menghitung ulang titik awal dan akhir dan akan sedikit rumit karena saya membuat beberapa grafik ini dengan kemiringan berbeda untuk garis tren. - person edsandorf   schedule 05.09.2017