簡體   English   中英

如何獲得以意外的長模式命名的data.frame的“ facet_wrap”圖?

[英]How can I get `facet_wrap` plot for the data.frame named with unexpected long pattern?

我有data.frame列表,其中的列用相當復雜的字符串命名,需要使用facet_wrap進行繪制。 我打算操縱這個復雜的字符串並在facet_grid中進行facet_grid 我有一些使用\\n分割字符串的想法,但是在結果圖中,我所需的標簽仍然沒有完全顯示出來。 如果用長字符命名的列被標簽,誰能給我一些想法如何繪制data.frame? 如何獲得理想的情節?

可復制的data.frame:

myList <- list(
    wmTncofSydhTfbsK90cmxcgMnP30SxEAlnTest1.saved=
        data.frame(GRP=c("up","up","down"), Name=rep("wmTncofSydhTfbsK90cmxcgMnP30SxEAlnTest1", 3),
                   v1=c(2,7,9)),
    wmTncofSydhTfbsK90cmxcgMnP30SxEAlnTest2.saved=
        data.frame(GRP=c("up","down","up","down"), Name=rep("wmTncofSydhTfbsK90cmxcgMnP30SxEAlnTest2", 4),
                   v1=c(13,8,11,3))
)

這是我想象中的理想情節:

在此處輸入圖片說明

我怎樣才能得到這個理想的情節? 如果data.frame以意外的長字符命名,該如何繪制? 提前致謝

編輯 :門檻越來越updown組,我們可以設定的閾值threshold >9up ; 否則down 對於這個遺漏的地方感到抱歉。

但是,如何在試圖操縱數據中的長字符串列的地方繼續執行此代碼? 誰能指出我如何進行我的方法並制作出我想要的情節?

下面是一些示例代碼,可通過將A列分成最多26個字符的行來糾正此問題:

library(stringr)
library(ggplot2)
df <- data.frame(A = c(paste(rep(LETTERS, 3), collapse = ""), paste(rep(letters, 3), collapse = "")), B = 3)
ggplot(df, aes(x = B)) + facet_wrap(~A) + geom_bar()
while(any(str_detect(df$A, "(?<=(^|\\n))[\\n]{26}(?=[^\\n])"))) {
  df %<>% mutate(A = str_replace(A, "(?<=(^|\\n))[\\n]{26}(?=[^\\n])", "\\0\n"))
}
ggplot(df, aes(x = B)) + facet_wrap(~A) + geom_bar()

核心是反復替換正則表達式模式(?<=(^|\\n))[^\\n]{26}(?=[^\\\\n])匹配26個字符(請自行選擇)長度子字符串wich不會立即由換行符接續,而是以字符串開頭或換行符開頭。

我建議逐步執行while循環以了解正則表達式的工作原理。

暫無
暫無

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

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