plot.window
için yardım asp
tartışılması sen plot
için yardım bakarsak asp
daha hakkında asp
öğrenmek için plot.window
yönlendirir, (xlim
ve ylim
ayarları geçersiz kılar ima):
asp
sonra pencere asp
x yönünde bir veri birimi eşit uzunlukta olacak şekilde ayarlanmış bir sonlu pozitif değer ise * y yönünde bir veri birimi. Bu durumda, par("usr")
artık, örneğin, par("xaxs")
değil, asp
ve aygıtın en boy oranına göre, tarafından belirlenmektedir
not edin. (Etkileşimli Aşağıdaki örnek çalıştırdıktan sonra arsa cihazı yeniden boyutlandırmak ne olur bakın!)
özel bir durum asp == 1
nokta arasındaki mesafeler doğru ekranda gösterilir araziler üretir. asp > 1
ile Değerler enlem ve boylam kullanırken daha doğru haritalar üretmek için kullanılabilir.
@ mr.joshuagordon belirtildiği gibi plot
den asp
argüman kaldırılırken,, istediğiniz boy oranını elde etmek için pdf
(veya png
veya jpeg
bitmap çıkış istiyorum) işlevi ve boyutlara sahip oynayabilir Böylece xlim
ve ylim
değerlerini ayarlayabilirsiniz.
Diğer bir seçenek, kolay eksen limitlerini ve ayrı ayrı boy oranını ayarlamak için yapar ggplot2
geçmek için:
library(ggplot2)
# Some fake data
dat = data.frame(x=c(2,30,50), y=c(10, 60, 90))
# 1 y-unit = 1 x-unit, so the plot area is not square
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(limits=c(0,70)) +
scale_y_continuous(limits=c(0,100)) +
coord_fixed(ratio=1)
# 1 y-unit = 0.7 * 1 x-unit, so the plot is square, but the physical distance
# of each x-unit and y-unit are no longer the same
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(limits=c(0,70)) +
scale_y_continuous(limits=c(0,100)) +
coord_fixed(ratio=70/100)
Update: Burada baz, bağımsız bir şekilde xlim
, ylim
ve en-boy oranını kontrol etmek için nasıl grafikler: asp
yerine, grafik alanının pin
parametresini kullanarak çizim alanının fiziksel boyutlarını ayarlayın. Bu ayar xlim
ve ylim
nominal değerlerini etkilemez, ancak 1 x birim ve 1 y biriminin fiziksel mesafe ölçüsünü değiştirir.
Örnek 1: İşte bazı örnekler
# Create a 12" x 6" pdf graphics device
pdf("test.pdf", width=12, height=6)
# Divide graphics device into two regions, each of which will contain a plot
par(mfrow=c(1,2))
# Left Panel: 5" x 5" plot area (plot region is square, so 1 y-unit =
# 0.7 * 1 x-unit in terms of physical distance in the plot region)
par(pin=c(5,5))
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n",main='par(pin=c(5,5)')
# Right Panel: 0.7*5" x 5" plot area (so 1 x-unit = 1 y-unit
# in terms of physical distance in the plot region)
par(pin=c(0.7*5,5))
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n",main='par(pin=c(5,0.7*5)')
dev.off()
Örnek 2: Biz farklı boy oranına sahip bir PDF sayfasında, her iki panelleri oluşturacağız sen eğer bir hata alırsınız olduğunu gösterme Grafik aygıtının boyutundan daha büyük olması için pin
'u ayarlayın. Varsayılan cihazı (benim durumumda RStudioGD
) kullanacağız.
par(pin=c(10, 10))
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n",main='par(pin=c(5,4)')
# Get dimensions of the default plot device
par("din")
# Create a plot that takes up an area just a bit smaller than the device size
par(pin=par("din")-0.2)
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n",main='par(pin=c(5,4)')
# Create a plot that takes up an area just a bit larger than the device size
# (we'll get an error this time)
par(pin=par("din") + 0.01)
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n")
> Error in plot.new() : plot region too large
Örnek 3: aynı hata size (vb veya png
) pdf
cihazın boyutunu aşıyorsa oluşur:
çalışır
# Create a 5" x 5" pdf graphics device
pdf("test.pdf", 5,5)
# Create a plot that takes up a little bit less than the device size
par(pin=c(5,5)-0.2)
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n")
dev.off()
# Create a plot that takes up a little bit more than the device size
pdf("test.pdf", 5,5)
par(pin=c(5,5)+0.01)
plot(0, 0, xlim = c(0, 70), ylim = c(0, 100), xlab = "", ylab = "",
type = "n")
# Gives the following error: Error in plot.new() : plot region too large
dev.off()
@ mr.joshuagordon'un yanıtına eklediğiniz için teşekkür ederiz. Bu neden işe yaramadığını açıklıyor, ancak hala xlim ve ylim'in asp tarafından geçersiz kılınmasının neden şaşırtıcı olduğunu düşünüyorum. Benim durumumda, asp ihtiyacım var (çünkü 1 x-adımı, verilerdeki sayaçları temsil ettiğinden tam olarak 1 y-adımına eşittir), ama ben de çalışıyorum veri aralığına arsayı sınırlamak istiyorum. ile. ggplot2 çözümü için teşekkürler, ggplot2 ... –
öğrenmeye başlamak zorundayım gibi görünüyor ggplot2'yi öğrenmenizi tavsiye ederim. Bir süreliğine de kaçındım çünkü grafikler hakkında yeni bir düşünme şekli öğrenmek için çok fazla iş gibi görünüyordu. Ama o kadar uzun sürmedi ve nadiren temel grafikleri kullanıyorum. – eipi10
Teşekkürler @ eipi10, son derece yardımcı oldunuz Cevabınızdaki güncellemeler ÇOK faydalıdır ve beni ggplot2'yi almam konusunda uyarıyorsunuz. Şimdiye kadar buna karşı koymamın bir nedeni, grafikleri temel grafiklerden çok daha yavaş göstermesidir. –