簡體   English   中英

如何從coplot()中選擇一個圖,或如何繪制特定子集

[英]How to select one plot from coplot(), or how to plot a specific subset

我正在嘗試像這樣使用coplot

coplot(lat ~ long | depth, data = quakes)

哪個產生這個” 這是每個深度級別的散點圖

但是,這將給出每個條件變量級別的圖表。 我想得到一個完整的散點圖,而不顯示變量的級別。 例如類似於以下內容:

在此處輸入圖片說明

我該如何自定義呢? 有什么幫助嗎?

看起來您真正想要的是繪制一個子集。 子集數據的方式會有所不同,具體取決於數據的形式(向量,矩陣,數據框,列表;數字,邏輯,字符)。 這將與諸如data(quake)類的數字數據框一起使用。

首先,您需要了解[]的功能。 如果您在幫助中搜索“ Extract ,則會找到有關其及其同級的信息。 []用於根據每個維度的索引從任何維度的向量,矩陣,數據幀和數組中提取元素,每個維度之間用逗號分隔。

假設您有一個向量vec <- c(1, 3, 2, 6, 4) 向量只有一個維度,因此您不必擔心要尋址的維度。 vec[3]將返回2 (即向量中的位置值或索引)3,即左數第三個元素。 vec[5]將返回第五個元素: 4 ,而vec[c(2, 1, 4)]將按該順序返回第二個,第一個和第四個元素。

在處理矩陣和數據框時,我們要處理兩個維度,通常稱為行和列。 使用[] ,尺寸將始終像這樣分開: [rows, columns] 讓我們創建一個矩陣。

mat <- matrix(c(9, 8, 7
                6, 5, 4
                3, 2, 1), nrow=3, byrow=TRUE)
mat
#      [,1] [,2] [,3]
# [1,]    9    8    7
# [2,]    6    5    4
# [3,]    3    2    1

沿着頂部和底部有[] ,其中的數字表示每個維度的索引。 您還會注意到,數字在側面是逗號前面,表示行,而數字在頂部是逗號后面,表示列。

那么,如果我調用mat[3, ]mat[, 2]什么? 好吧,我得到了相應行或列中的每個元素。 如果要在上述矩陣中提取4 ,該怎么辦? 好吧,它的行是nr 2,它的列是nr 3,所以它可以簡單地是mat[2, 3]嗎? 為什么是呢!
現在我們快到了,要顯示的另一件事是,我們可以按名稱而不是按索引引用行和列。 上面的矩陣沒有任何尺寸名稱,因此我們必須添加它們。

rownames(mat) <- c("r1", "r2", "r3")
colnames(mat) <- c("c1", "c2", "c3")
mat
#    c1 c2 c3
# r1  9  8  7
# r2  6  5  4
# r3  3  2  1

現在mat[,"c2"]將返回名為c2的列,而mat["r1"]將返回名為r1的行。

quakes
假設我們要繪制所有地震深度超過400公里的地震。

提取該子集的一種簡單方法是

quakes.sub <- quakes[quakes[,"depth"] > 400, c("long", "lat")]

這里唯一的新事物是> ,在這種情況下,它詢問:“ quakes[,"depth"]中的值是否大於400?”。 對於每個yes,都會返回TRUE ,而對於每個no則返回FALSE 僅返回TRUE列將包含在子集中。

要繪制子集,您只需要

plot(quakes.sub)

在此處輸入圖片說明

這僅僅是開始。 您可以使用with()來避免多次輸入quakes ,使用which()可以更優雅地處理NA ,並且可以使用邏輯運算符(而非: !和)來堆疊條件( <>==!& ,或: | ),允許使用更高級的子集規則。

rows <- with(quakes, which(depth < 400 &
                           depth > 100 &
                             mag > 4.3 &
                        stations > 20))
quakes.sub <- quakes[rows, c("long", "lat")]

plot(quakes.sub)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM