主頁 > 軟體工程 > 如何在具有多個圖例的條形圖中編輯ggpattern圖例?

如何在具有多個圖例的條形圖中編輯ggpattern圖例?

2022-10-31 22:36:14 軟體工程

在使用 ggpatterns 時,如何在保留其他圖例的同時編輯模式的圖例?

我有以下情節: 如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

我使用以下代碼制作此圖:

ggplot(try2, aes(Season, prey_frq, fill=PreyName, pattern = Type))  
  geom_bar_pattern(stat = "identity",
                   pattern_fill = "black",
                   pattern_color = "black",
                   pattern_angle = 45,
                   pattern_density = 0.04,
                   pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.6)  
  geom_text(data = subset(try2, prey_frq>3),
            aes(y = pos_label,
                label = PreyName), face = "bold", size = 7)  
  scale_pattern_manual(values = list,
                       c('Other' = 'none', 'Pelagic' = 'stripe', 'Benthic' = 'circle'))  
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  scale_fill_igv(palette = "default")  
  guides(pattern = guide_legend(
    title = "Type",
    #direction = "horizontal",
    title.position = "top",
    label.position = "right",
    label.hjust = 0.5,
    label.vjust = 1
    #label.theme = element_text(angle = 90)
    , override.aes = list(fill = "white"), order = 2),
    fill = guide_legend(override.aes = list(pattern = "none", order = 1)))  
  theme_bw()  
  theme(legend.position = "right", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial",
                                  size=15),
        legend.background = element_rect(fill = "white", color = 1),
        legend.title.align = 0.5,
        legend.title = element_text(face = "bold"),
        axis.title.y = element_text(size = 15, 
                                    margin = margin(t = 0, r = 10, b = 0, l = 0), 
                                    color = "black"),
        axis.title.x.top = element_text(size = 14, 
                                        margin = margin(t = 0, r = 0, b = 10, l = 0), 
                                        color = "black"),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, 
                                   angle = 0, 
                                   vjust = 0.5, 
                                   hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, 
                                   angle = 0, 
                                   vjust = 1.5, 
                                   hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14,
                                    face = "bold"),
        axis.ticks.x = element_blank(),
        plot.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01)))

我的資料:

structure(list(Season = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,  1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,  2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), levels = c("Pre-Hypoxic", "Peak-Hypoxic", "Post-Hypoxic"), class = "factor"), PreyName = structure(c(1L,  2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 12L, 13L, 14L, 16L, 17L,  18L, 19L, 20L, 1L, 2L, 5L, 6L, 7L, 9L, 10L, 11L, 12L, 16L, 18L,  1L, 2L, 7L, 10L, 12L, 15L, 17L), levels = c("Bythotrephes", "Chironomid Pupae",  "Copepod", "Cyclopoid", "Daphnia", "Amphipod", "Chironomid Larvae",  "Chydorid", "Dreissena", "Goby", "Hemimysis", "Isopod", "Sphaeriidae",  "Trichopteran", "Eurycercidae", "Chironomid Adult", "Chironomid",  "Egg Mass", "Fish Eggs", "Unidentified Prey Fish"), class = "factor"), 
    prey_tot = c(17.227374302, 18.112509605, 0.04050358, 0.005066528, 
    5.523993801, 2.136988844, 3.658250957, 0.002595249, 3.058675062, 
    1.450201253, 0.390600742, 0.012119854, 0.000132338, 3.25891984, 
    2.364342323, 0.144497136, 0.843162564, 0.770066004, 10.507750454, 
    2.35437128, 1, 3.701960013, 4.425697495, 2.716899247, 1.85298377, 
    0.005729159, 0.125721411, 0.089801008, 0.219086164, 2.568237924, 
    0.054330796, 0.597450037, 1.999999999, 2.601784687, 1.031812817, 
    0.146383739), month_tot = c(58.999999982, 58.999999982, 58.999999982, 
    58.999999982, 58.999999982, 58.999999982, 58.999999982, 58.999999982, 
    58.999999982, 58.999999982, 58.999999982, 58.999999982, 58.999999982, 
    58.999999982, 58.999999982, 58.999999982, 58.999999982, 58.999999982, 
    27.000000001, 27.000000001, 27.000000001, 27.000000001, 27.000000001, 
    27.000000001, 27.000000001, 27.000000001, 27.000000001, 27.000000001, 
    27.000000001, 8.999999999, 8.999999999, 8.999999999, 8.999999999, 
    8.999999999, 8.999999999, 8.999999999), prey_frq = c(29.1989395038234, 
    30.6991688313997, 0.0686501356141645, 0.00858733559584021, 
    9.36270136048353, 3.62201499093553, 6.20042535273911, 0.00439872711998605, 
    5.1841950219206, 2.45796822617362, 0.66203515613418, 0.0205421254299959, 
    0.000224301694983685, 5.52359295083771, 4.00735987071411, 
    0.244910400074718, 1.42908909196142, 1.30519661734735, 38.9175942726327, 
    8.71989362930667, 3.70370370356653, 13.7109630106033, 16.3914722030966, 
    10.062589803331, 6.86290285159767, 0.0212191074066215, 0.46563485553831, 
    0.332596325913608, 0.811430237006984, 28.535976936504, 0.603675511178186, 
    6.63833374518204, 22.2222222135802, 28.9087187476565, 11.4645868568294, 
    1.62648598906961), pos_label = c(85.4005302480883, 55.4514760804767, 
    40.0675665969698, 40.0289478613648, 35.3433035133251, 28.8509453376155, 
    23.9397251657782, 20.8373131258487, 18.2430162513284, 14.4219346272813, 
    12.8619329361274, 12.5206442953453, 12.5102610817828, 9.74835245551644, 
    4.98287604474054, 2.85674090934613, 2.01974116332806, 0.652598308673674, 
    80.5412028636837, 56.722458912714, 50.5106602462774, 41.8033268891925, 
    26.7521092823425, 13.5250782791287, 5.06233195166436, 1.6202709721622, 
    1.37684399068974, 0.977728399963794, 0.405715118503494, 85.732011531748, 
    71.1621853079069, 67.5411806797268, 53.1109027003457, 27.5454322197273, 
    7.3587794174843, 0.813242994534804), Type = structure(c(1L, 
    1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 1L, 1L, 
    2L, 2L, 2L, 2L, 3L), levels = c("Pelagic", "Benthic", "Other"
    ), class = "factor")), row.names = c(NA, -36L), groups = structure(list(
    Season = structure(1:3, levels = c("Pre-Hypoxic", "Peak-Hypoxic", 
    "Post-Hypoxic"), class = "factor"), .rows = structure(list(
        1:18, 19:29, 30:36), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame" ), row.names = c(NA, -3L), .drop = TRUE), class = c("grouped_df",  "tbl_df", "tbl", "data.frame"))

還運行了這一行:

list <- c('Other' = 'none', 'Pelagic' = 'stripe', 'Benthic' = 'circle')

我加載了以下軟體包:

library(ggplot2)
library(tidyverse)
library(scales)
library("RColorBrewer")
library(data.table)
library(ggsci)
library(ggpattern)

我考慮并訂購了“型別”組,因為我希望按以下順序排列圖例:Pelagic、Benthic、Other。

具體來說,我想:

  1. 讓圖例中的圖案更加清晰。例如,圖例中的“遠洋”組有更多的線條(超過 1 條)和“底棲”組的更多圈。
  2. 在圖例模式專案之外添加一個輪廓(框)(有一個框/輪廓用于線條,一個用于圓圈,一個用于空白(“其他”)組。
  3. 洗掉此圖例的標題“型別”,同時保留另一個圖例的標題“獵物名稱”。
  4. 不是非常重要,但是否可以在移動模式圖例的同時將 Prey Name 圖例保持在原位置(例如將模式移動到“頂部”位置)。或者我可以居中/對齊模式(“型別”)圖例,使其居中(在中間)在獵物名稱圖例上?

幾天來我一直在嘗試編輯圖例,但我嘗試過的任何方法都沒有奏效/改進它。

歡迎對這個情節的美學提出任何其他建議!

謝謝!

uj5u.com熱心網友回復:

一些東西:

  • face不是一個論點,而是fontfacegeom_textface雖然它在主題中)
  • 在 中scale_pattern_manual,您有values = list,然后您將串列(不是變數,而是內容)包含在該函式中。你不需要兩者。一個或另一個就足夠了。

我認為實作這一切的最簡單方法是創建三個單獨的圖。第一個將只有模式圖例。第二個將只有顏色圖例。第三個不會有傳奇。最后,將碎片粉碎在一起。這就是它所創造的。

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

輸入圖例

我做了幾處更改,使type圖例看起來像你描述的那樣。ggplot中,我注釋掉了對fill. geom_col_pattern(或bar identity)中,我添加了filland color,同時減小了比例因子(因此您的圖例中有許多條和點)。我還洗掉了對scale_fill_igvand的呼叫guide最后,legend.marginlegend.titletheme. (我認為這就是一切。)

這為您提供了一個具有更普遍模式的圖例,模式周圍有框,以及一種將其居中于另一個圖例的方法。在這個情節中唯一重要的是傳說。這是我們將保留的唯一部分。

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

# library(ggplot2) # redundant (this is in tidyverse)
# library(tidyverse) <--- moved last, so its functions have priority
library(scales)
library(RColorBrewer)
library(data.table)
library(ggsci)
library(ggpattern)
library(cowplot)    # get_legend(), plot_grid()
library(patchwork)  # blank plot: plot_spacer()
library(tidyverse)

#------------- for the pattern legend -------------
ggplot(try2, aes(Season, prey_frq, #fill = PreyName, 
                 pattern = Type), fill = "white")  
  geom_col_pattern(fill = "white", color = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.3)  
  geom_text(data = subset(try2, prey_frq > 3),
            aes(y = pos_label, label = PreyName), fontface = "bold", size = 7)   # <---- error here; fixed face to fontface
  scale_pattern_manual(values = list, name = "")  
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  theme_bw()  
  theme(legend.position = "right", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        legend.background = element_rect(fill = "white", color = 1),
        # legend.title.align = 0.5,
        legend.margin = margin(t = .1, r = 15, b = 5, l = 15),
        legend.title = element_blank(),
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01)))

現在,提取圖例。如果您不立即呼叫它,last_plot()將無法正常作業。(您可以將繪圖分配給一個物件并在此處使用物件名稱。)

types = get_legend(last_plot())    # extract the legend

顏色圖例

接下來,顏色圖例。這里唯一真正的變化是移除了模式圖例。從原始情節(不是其他傳說的情節)開始,我在電話中注釋掉了pattern呼吁ggplot我注釋掉了呼叫scale_pattern_manual和呼叫titlein guides

#------------ color legend ------------
ggplot(try2, aes(Season, prey_frq, fill = PreyName,
                 # pattern = Type
))  
  geom_bar_pattern(stat = "identity", pattern_fill = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.6)  
  geom_text(data = subset(try2, prey_frq>3),
            aes(y = pos_label, label = PreyName), 
            fontface = "bold", size = 4)  
  # scale_pattern_manual(values = list, name = "")  
  theme(legend.direction = "horizontal")   
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  scale_fill_igv(palette = "default")  
  guides(pattern = guide_legend(
    # title = "Type", 
    title.position = "top", label.position = "right", 
    label.hjust = 0.5, label.vjust = 1, override.aes = list(fill = "white"), order = 2),
    fill = guide_legend(override.aes = list(pattern = "none", order = 1)))  
  theme_bw()  
  theme(legend.position = "right", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        legend.background = element_rect(fill = "white", color = 1),
        legend.title.align = 0.5,
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01)))

這就是情節。

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

就像最后一個情節一樣,你需要捕捉傳說。

prey = get_legend(last_plot())

接下來,我們將把圖例組合成一個元素。這將自然地使兩者彼此居中。

(legs <- plot_grid(types, prey, plot_spacer()   theme_void(),
                   nrow = 2, ncol = 1, rel_heights = c(.1, .6)))

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

沒有傳說

現在,對于您的原始情節。首先,你不想要任何傳說。最簡單的方法是添加legend.position = "none"theme. 與圖例相關的所有其他內容都需要保持不變,以便正確呈現情節。

我冒昧地改變了一些事情。最大的問題之一ggplot是不太相關的文本。您可以使用該功能修復它rel()此外,由于文本實際上是粗體(它不在您的圖片中),所以它被夸大了。我添加str_wrapgeom_text以換行文本。有了條紋,黑色的文字真的被吞沒了,所以我嘗試了白色和其他淺色的變體,看看有什么效果。好像yellow做得還不錯。(您可以隨時更改它。)我使用引數lineheight將包裝文本更緊密地結合在一起。最后,我將此圖分配給物件名稱plt

# ----------- final plot ----- NO LEGEND -------------
ggplot(try2, aes(Season, prey_frq, fill = PreyName, pattern = Type))  
  geom_bar_pattern(stat = "identity", pattern_fill = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.6)  
  geom_text(data = subset(try2, prey_frq>3),
            aes(y = pos_label, label = str_wrap(PreyName, 10)), 
            fontface = "bold", size = rel(4.5), color = "yellow",
            lineheight = .8)   # <---- error here; fixed face to fontface
  scale_pattern_manual(values = list, name = "")  
  theme(legend.direction = "horizontal")   
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  scale_fill_igv(palette = "default")  
  guides(pattern = guide_legend(
    # title = "Type", 
    title.position = "top", label.position = "right", 
    label.hjust = 0.5, label.vjust = 1, override.aes = list(fill = "white"), order = 2),
    fill = guide_legend(override.aes = list(pattern = "none", order = 1)))  
  theme_bw()  
  theme(legend.position = "none", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        # legend.background = element_rect(fill = "white", color = 1),
        # legend.title.align = 0.5,
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01))) -> plt

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

好吧,還差一步。把它們放在一起。根據您將如何使用它以及查看器窗格的大小,您可能需要調整rel_widths.

plot_grid(plt, legs, ncol = 2, rel_widths = c(.8, .4))

如何在具有多個圖例的條形圖中編輯 ggpattern 圖例?

接下來,我將所有代碼放在一個塊中,以便您更輕松地收集它。(與您在上面看到的代碼相同。)

# library(ggplot2) # redundant
# library(tidyverse) <--- moved last, so it's functions have priority
library(scales)
library(RColorBrewer)
library(data.table)
library(ggsci)
library(ggpattern)
library(cowplot)    # get_legend(), plot_grid()
library(patchwork)  # blank plot: plot_spacer()
library(tidyverse)

#------------- for the pattern legend -------------
ggplot(try2, aes(Season, prey_frq, #fill = PreyName, 
                 pattern = Type), fill = "white")  
  geom_col_pattern(fill = "white", color = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.3)  
  geom_text(data = subset(try2, prey_frq > 3),
            aes(y = pos_label, label = PreyName), fontface = "bold", size = 7)   # <---- error here; fixed face to fontface
  scale_pattern_manual(values = list, name = "")  
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  theme_bw()  
  theme(legend.position = "right", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        legend.background = element_rect(fill = "white", color = 1),
        # legend.title.align = 0.5,
        legend.margin = margin(t = .1, r = 15, b = 5, l = 15),
        legend.title = element_blank(),
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01)))

types = get_legend(last_plot())

#------------ color legend ------------
ggplot(try2, aes(Season, prey_frq, fill = PreyName,
                 # pattern = Type
))  
  geom_bar_pattern(stat = "identity", pattern_fill = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.6)  
  geom_text(data = subset(try2, prey_frq>3),
            aes(y = pos_label, label = PreyName), 
            fontface = "bold", size = 4)  
  # scale_pattern_manual(values = list, name = "")  
  theme(legend.direction = "horizontal")   
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  scale_fill_igv(palette = "default")  
  guides(pattern = guide_legend(
    # title = "Type", 
    title.position = "top", label.position = "right", 
    label.hjust = 0.5, label.vjust = 1, override.aes = list(fill = "white"), order = 2),
    fill = guide_legend(override.aes = list(pattern = "none", order = 1)))  
  theme_bw()  
  theme(legend.position = "right", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        legend.background = element_rect(fill = "white", color = 1),
        legend.title.align = 0.5,
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01)))

prey = get_legend(last_plot())

(legs <- plot_grid(types, prey, plot_spacer()   theme_void(),
                   nrow = 2, ncol = 1, rel_heights = c(.1, .6)))


# ----------- final plot ----- NO LEGEND -------------
ggplot(try2, aes(Season, prey_frq, fill = PreyName, pattern = Type))  
  geom_bar_pattern(stat = "identity", pattern_fill = "black",
                   pattern_color = "black", pattern_angle = 45,
                   pattern_density = 0.04, pattern_spacing = 0.04,
                   pattern_key_scale_factor = 0.6)  
  geom_text(data = subset(try2, prey_frq>3),
            aes(y = pos_label, label = str_wrap(PreyName, 10)), 
            fontface = "bold", size = rel(4.5), color = "yellow",
            lineheight = .8)   # <---- error here; fixed face to fontface
  scale_pattern_manual(values = list, name = "")  
  theme(legend.direction = "horizontal")   
  ggtitle("TITLE")  
  labs(x="Season", fill = "Prey Name", y = "Prey Biomass Consumed (%)")   
  scale_fill_igv(palette = "default")  
  guides(pattern = guide_legend(
    # title = "Type", 
    title.position = "top", label.position = "right", 
    label.hjust = 0.5, label.vjust = 1, override.aes = list(fill = "white"), order = 2),
    fill = guide_legend(override.aes = list(pattern = "none", order = 1)))  
  theme_bw()  
  theme(legend.position = "none", 
        plot.title = element_text(hjust=0.5, face = "bold", family = "Arial", size=15),
        # legend.background = element_rect(fill = "white", color = 1),
        # legend.title.align = 0.5,
        axis.title.y = element_text(size = 15, color = "black",
                                    margin = margin(t = 0, r = 10, b = 0, l = 0)),
        axis.title.x.top = element_text(size = 14, color = "black",
                                        margin = margin(t = 0, r = 0, b = 10, l = 0)),
        text = element_text(family = "Times New Roman"),
        axis.text.y = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 0.5, hjust = 1,
                                   margin = margin(t = 0, r = 5, b = 0, l = 0)),
        axis.text.x = element_text(color = "black", 
                                   size = 13, angle = 0, vjust = 1.5, hjust = 0.5,
                                   margin = margin(t = 5, r = 0, b = 0, l = 0)),
        axis.title.x = element_text(size = 14, face = "bold"),
        axis.ticks.x = element_blank(), plot.background = element_blank(),
        panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.ticks.length = unit(0.2,"cm"))  
  scale_y_continuous(expand = expansion(mult = c(0,0.01))) -> plt

plot_grid(plt, legs, ncol = 2, rel_widths = c(.8, .4))

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523459.html

標籤:rggplot2传奇gg模式

上一篇:按未在{ggplot2}中繪制的變數的值繪制顏色

下一篇:如何使用多個條件繪制函式圖?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more