色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

R語言-customLayout-包拼圖

冬至子 ? 來源:康娜的編程日記 ? 作者:康娜醬 ? 2023-05-19 17:23 ? 次閱讀

目標

使用R拼出這樣的一張圖:

圖片

Let's start

1. 安裝 customLayout

install.packages("customLayout")

# or
library(devtools)
install_github("zzawadz/customLayout")

簡單介紹一下 customLayout 包:

  • lay_new(mat, widths, heights)
    • mat: 數字矩陣,以1開始且連續, 確定區數和排布順序
    • widths、heights:確定每一區的比例
  • lay_show(lay)
    • 預覽分區
  • lay_bind_row(lay1, lay2, ..., heights)
    • 按行將兩個布局按特定比例合并,不支持合并兩個以上的布局,下同(太拉了~)
  • lay_bind_col(lay1, lay2, ..., widths)
    • 按列將兩個布局按特定比例合并
  • lay_split_field(lay1, lay2, field = idx)
    • 將lay1分割一特定部分(第idx區)給lay2,即將lay2嵌入lay1的內部
  • lay_set(lay)
    • 使用指定的布局進行繪圖
  • lay_grid(grobs, lay)
    • 用于繪制ggplot對象,并指定布局
    • grobs: 包含多個繪圖對象的list
    • lay:繪圖布局

有了這些功能,基本上就可以滿足拼圖需求了。

2. 布局設計

首先根據效果圖將圖進行分區并且編號,方便制定排版方案,編號規則為從上到下,從左到右

圖片

編號之后應該是這樣的:

圖片

然后確定排版方案:

  • 分為三大部分,12、3456、7 三部分
  • 其中3456部分又可以分為三小部分3、4、56
  • 56又可以分為5、6兩小小部分 按此思路,總結為:圖片

每大部分內部按行合并,最后將三部分按列合并,并且在排列的時候注意比例。

2. 繪制布局

Step 1:繪制 lay_3456
p3 = p4 = p5 = p6 = lay_new(matrix(1))
lay56 = lay_bind_row(p5, p6, heights = c(1, 1))
lay3456 = lay_bind_col(lay_bind_col(p3, p4, widths = c(2, 4)), lay56, widths = c(6, 3))
lay_show(lay3456)

圖片

Step 2:繪制 lay_127并與lay3456合并
lay127 = lay_new(matrix(1:4, nrow = 2), heights = c(6, 3), widths = c(6, 9))
lay_show(lay127)

圖片

lay_res = lay_split_field(lay127, lay3456, field = 3)
lay_show(lay_res)

圖片

這樣布局就已經畫好了,接下來直接填圖就行了。

使用布局畫圖

先畫個簡單的快速看下效果:

pdf("customLayout1.pdf", 13, 9)
lay_set(lay_res)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
plot(1:10)
dev.off()

圖片

再畫個像樣點的并測試能不能合并ggplot對象:

# test customLayout
library("customLayout")
library("ggplot2")

data = iris
colnames(data) = LETTERS[1:ncol(data)]

# plot lay3456
p3 = p4 = p5 = p6 = lay_new(matrix(1))
lay56 = lay_bind_row(p5, p6, heights = c(1, 1))
lay3456 = lay_bind_col(lay_bind_col(p3, p4, widths = c(2, 4)), lay56, widths = c(6, 3))
lay_show(lay3456)

# plot lay127 and lay_res
lay127 = lay_new(matrix(1:4, nrow = 2), heights = c(6, 3), widths = c(6, 9))
lay_show(lay127)
lay_res = lay_split_field(lay127, lay3456, field = 3)
lay_show(lay_res)

# fill lay

p1 <- ggplot(data, aes(A, B)) + geom_point(colour = "#dd1c77")
p2 <- ggplot(data, aes(A)) + geom_histogram(binwidth = 0.1, colour = "#dd1c77", fill= "#dd1c77")
p3 <- ggplot(data, aes(B)) + geom_density(alpha = 0.2, colour = "#dd1c77", fill = "white", size = 2)
p4 <- ggplot(data, aes(A, B, fill = C)) + geom_tile()
p5 <- ggplot(data[data[, "E"] == "setosa",], aes(y = C)) + geom_boxplot(colour = "#dd1c77", size = 2)
p6 <- ggplot(data[data[, "E"] == "versicolor",], aes(y = C)) + geom_boxplot(colour = "#dd1c77", size = 2)
p7 <- ggplot(data, aes(x = B, y = C)) + geom_line(colour = "#dd1c77", size = 2)

pdf("customLayout2.pdf", 13, 9)
 plots2 = lapply(c(1:7), function(x) get(paste0("p", x)))
 lay_grid(plots2, lay_res)
dev.off()

圖片

另外發現基礎包的圖和ggplot2的圖不能合并,不過一般也不會用基礎包來畫圖~

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Layout
    +關注

    關注

    14

    文章

    405

    瀏覽量

    61830
  • r語言
    +關注

    關注

    1

    文章

    30

    瀏覽量

    6298
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實戰:【親子拼圖游戲】

    編程語言編寫的一個分布式益智拼圖游戲,可以兩臺設備同時開啟一局拼圖游戲,每次點擊九宮格內的圖片,都會同步更新兩臺設備的圖片位置
    的頭像 發表于 04-16 17:00 ?593次閱讀
    HarmonyOS開發實戰:【親子<b class='flag-5'>拼圖</b>游戲】

    拼圖游戲之新鳥求教老鳥

    本帖最后由 yl383576734 于 2012-4-11 16:47 編輯 如何在這個拼圖游戲中,加入統計按鍵次數和類似排行榜一樣的東西,記錄每一次完成拼圖游戲的按鍵次數,求給位大神幫忙啊
    發表于 04-11 16:42

    鍵盤拼圖游戲

    在做鍵盤拼圖游戲時,為什么運行時點擊按鈕圖片沒有反應??求各位大神指導。。。
    發表于 04-06 10:25

    Matlab與R語言的區別

    具在學術界發表,作者本人或者團隊會在第一時間、甚至文章發表前就發布基于這個文章的R擴展,使得其幾乎總是走在學術界前沿。r語言和matlab區別總結:1.matlab的語法更適合于矩陣
    發表于 05-03 10:18

    用JS寫一個OpenHarmony拼圖小游戲

    1. 樣例效果本Demo是基于OpenHarmony3.0 LTS,使用JS語言編寫的拼圖小游戲。
    發表于 07-27 18:24

    拼圖游戲(java)

    拼圖游戲(java)   java編寫的一款簡單的拼圖游戲,可以下載到手機上玩。..rar
    發表于 04-09 15:18 ?37次下載

    微軟Visual Studio支持R語言

    微軟 Visual Studio 近日宣布開始支持R語言,并推出免費開源的R語言工具(R Tools for Visual Studio,R
    發表于 10-12 11:47 ?0次下載

    r語言是什么_r語言基礎教程

    R語言是一個開源的數據分析環境,起初是由數位統計學家建立起來,以更好的進行統計計算和繪圖,這篇wiki中包含了一些基本情況的介紹。由于R可以通過安裝擴展(Packages)而得到增強
    發表于 01-05 15:03 ?1w次閱讀

    詳細介紹go語言中的閉的實現

    什么是閉? 什么場景下會用閉 ? 本文對 go 語言中的閉做了詳細介紹。 閉是由函數及其相關引用環境組合而成的實體(即:閉
    的頭像 發表于 10-20 16:18 ?1867次閱讀

    帶你了解go語言中的閉

    ? 【 導讀】什么是閉? 什么場景下會用閉 ? 本文對 go 語言中的閉做了詳細介紹。 閉是由函數及其相關引用環境組合而成的實體(即
    的頭像 發表于 11-02 15:27 ?2457次閱讀

    如何用C語言實現拼圖游戲項目

    ? 這篇文章主要為大家詳細介紹了 C語言實現——《拼圖游戲項目》 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下! ? 游戲介紹: 對剛開始接觸拼圖的玩家而言,所謂
    的頭像 發表于 11-11 14:13 ?1890次閱讀

    基于STM32設計的拼圖小游戲

    基于STM32設計的拼圖小游戲
    發表于 11-23 17:51 ?30次下載
    基于STM32設計的<b class='flag-5'>拼圖</b>小游戲

    C語言+easyX帶你實現:數字拼圖游戲!

    這是一個簡易的拼圖游戲,一共有 15 個數字方塊,將其一行行的排列為 1~15 即可完成。游戲會記錄下完成拼圖的時間。我想說的是,很多時候,精彩的游戲不一定非要用圖片。將游戲的功能和手感都做好,游戲一樣好玩。所以我就做了這個拼圖
    的頭像 發表于 02-26 10:01 ?1050次閱讀

    RA78K0R Ver.1.20 語言匯編

    RA78K0R Ver.1.20 語言匯編
    發表于 04-28 19:18 ?1次下載
    RA78K0<b class='flag-5'>R</b> Ver.1.20 <b class='flag-5'>語言</b>匯編<b class='flag-5'>包</b>

    PyBadge和PyBadge LC的滑動拼圖

    電子發燒友網站提供《PyBadge和PyBadge LC的滑動拼圖.zip》資料免費下載
    發表于 07-10 16:38 ?0次下載
    PyBadge和PyBadge LC的滑動<b class='flag-5'>拼圖</b>
    主站蜘蛛池模板: 免费国产黄线在线播放| 亚洲AV久久无码精品国产网站| 亚洲免费视频在线| 国产在线精品亚洲第一区| 亚洲精品一本之道高清乱码| 精品网站一区二区三区网站| 最新中文字幕在线视频| 欧美美女论坛| 国产精品资源网站在线观看| 亚洲欧美日韩在线码不卡| 快播电影频道| 阿娇和冠希13分钟在线观看| 脱女学小内内摸出水网站免费| 狠狠鲁 我喜欢| 97久久久久| 天美传媒 免费观看| 久久国语精品| 国产免费久久爱久久啪| 亚洲一区国产| 女bbbbxxx孕妇| 国产成人久久婷婷精品流白浆| 亚洲男人在线观看| 欧美videqsdesex0| 国产午夜精品福利久久| 最美女人体内射精一区二区| 色爰情人网站| 久久综合一个色综合网| 大肚婆孕妇网| 在线精品视频免费观看| 日日撸影院在线| 久久综合狠狠综合狠狠| 国产福利高清在线视频| 综合一区无套内射中文字幕| 首页_亚洲AV色老汉影院| 久久综合九色| 国产午夜久久影院| wwwav在线| 亚洲天堂一区二区三区| 日韩亚射吧| 欧美v1deossexo高清| 花蝴蝶在线观看中字|