跟着Nature Communications学作图:纹理柱状图+添加显著性标签!

📋文章目录

  • 复现图片
  • 设置工作路径和加载相关R包
  • 读取数据集
  • 数据可视化
    • 计算均值和标准差
  • 计算均值和标准差
    • 方差分析
    • 组间t-test
  • 图a可视化过程
  • 图b可视化过程
  • 合并图ab

   跟着「Nature Communications」学作图,今天主要通过复刻NC文章中的一张主图来巩固先前分享过的知识点,比如纹理柱状图、 添加显著性标签、拼图等,其中还会涉及数据处理的相关细节和具体过程。

复现图片

在这里插入图片描述

在这里插入图片描述
主要复现红框部分,右侧的cd图与框中的图是同类型的,只不过需要构建更多数据相对麻烦,所以选择以左侧红框图进行学习和展示。

设置工作路径和加载相关R包

rm(list = ls()) # 清空当前环境变量
setwd("C:/Users/Zz/Desktop/公众号 SES") # 设置工作路径
# 加载R包
library(ggplot2)
library(agricolae)
library(ggpattern)
library(ggpubr)

读取数据集

cData1 <- read.csv("cData1.csv", header = T, row.names = 1)
head(cData1)
#   Type   Deep ctValue ftValue Stripe_Angle
# 1   BT    Top      55      73          135
# 2   BT    Top      61      78          135
# 3   BT    Top      69      80          135
# 4   BT Center      35      50          135
# 5   BT Center      42      41          135
# 6   BT Center      43      57          135

数据包括以下指标:2个分类变量、2个数值变量、和1个整数变量。

数据可视化

在可视化前,我们需要先思考图中构成的元素,由哪些组成。

  • 计算每个分组或处理下的均值和标准差;
  • 进行组内的方差分析及多重比较;
  • 进行组间的t检验;

计算均值和标准差

cData1_mean <- cData1 %>% 
  gather(key = "var_type", value = "value",
         3:4) %>% 
  group_by(Type, Deep, var_type, Stripe_Angle) %>%  
  summarise(mean = mean(value),
            sd = sd(value))
cData1_mean  
# A tibble: 12 × 6
# Groups:   Type, Deep, var_type [12]
# Type  Deep   var_type Stripe_Angle  mean    sd
# <fct> <chr>  <chr>           <int> <dbl> <dbl>
# 1 BT    Bottom ctValue           135  47.7  1.53
# 2 BT    Bottom ftValue           135  48    1   
# 3 BT    Center ctValue           135  40    4.36
# 4 BT    Center ftValue           135  49.3  8.02
# 5 BT    Top    ctValue           135  61.7  7.02
# 6 BT    Top    ftValue           135  77    3.61
# 7 CK    Bottom ctValue           135  42    7.21
# 8 CK    Bottom ftValue           135  48    4.36
# 9 CK    Center ctValue           135  38.3  2.08
# 10 CK    Center ftValue           135  47.7  5.13
# 11 CK    Top    ctValue           135  46.7  7.57
# 12 CK    Top    ftValue           135  53.7 12.3 

计算均值和标准差

cData_summary <- cData %>%
  group_by(Weeks, Type) %>%
  summarise(
    avg_lfValue = mean(lfValue),
    sd_lfValue = sd(lfValue),
    avg_rgValue = mean(rgValue),
    sd_rgValue = sd(rgValue),
  )
cData_summary
# Weeks Type               avg_lfValue sd_lfValue avg_rgValue sd_rgValue
# <dbl> <chr>                    <dbl>      <dbl>       <dbl>      <dbl>
# 1    20 By week of onset         2623.       25.2        1.98     0.0764
# 2    20 By week of testing       2500        50          1.42     0.104 
# 3    21 By week of onset         3543.       40.4        1.74     0.0361
# 4    21 By week of testing       2737.       51.3        1.21     0.0361
# 5    22 By week of onset         2770        26.5        1.28     0.0300
# 6    22 By week of testing       2160        60          1.10     0.0839
# 7    23 By week of onset         2143.       40.4        1.31     0.0208
# 8    23 By week of testing       1777.       75.1        1.02     0.0153
# 9    24 By week of onset         1823.       25.2        1.15     0.0300
# 10    24 By week of testing       1667.       61.1        1.07     0.0265
# 11    25 By week of onset         1690        36.1        1.23     0.0208
# 12    25 By week of testing       1610        36.1        1.2      0.0300
# 13    26 By week of onset         1607.       30.6        1.18     0.0252
# 14    26 By week of testing       1673.       30.6        1.16     0.0361

方差分析

# 方差分析
groups <- NULL
vl <- unique((cData1 %>% 
                gather(key = "var_type", value = "value", 3:4) %>% 
                unite("unique_col", c(Type, var_type), sep = "-"))$unique_col)
vl

for(i in 1:length(vl)){
  df <- cData1 %>% 
    gather(key = "var_type", value = "value", 3:4) %>% 
    unite("unique_col", c(Type, var_type), sep = "-") %>% 
    filter(unique_col == vl[i])
  aov <- aov(value ~ Deep, df)
  lsd <- LSD.test(aov, "Deep", p.adj = "bonferroni") %>%
    .$groups %>% mutate(Deep = rownames(.),
                        unique_col = vl[i]) %>%
    dplyr::select(-value) %>% as.data.frame()
  groups <- rbind(groups, lsd)
}
groups <- groups %>% separate(unique_col, c("Type", "var_type"))
groups
#         groups   Deep Type var_type
# Top          a    Top   BT  ctValue
# Bottom       b Bottom   BT  ctValue
# Center       b Center   BT  ctValue
# Top1         a    Top   CK  ctValue
# Bottom1      a Bottom   CK  ctValue
# Center1      a Center   CK  ctValue
# Top2         a    Top   BT  ftValue
# Center2      b Center   BT  ftValue
# Bottom2      b Bottom   BT  ftValue
# Top3         a    Top   CK  ftValue
# Bottom3      a Bottom   CK  ftValue
# Center3      a Center   CK  ftValue

使用aov函数和LSD.test函数实现方差分析及对应的多重比较,并提取显著性字母标签。

然后将多重比较的结果与原均值标准差的数据进行合并:

cData1_mean1 <- left_join(cData1_mean, groups, by = c("Deep", "Type", "var_type")) %>% 
  arrange(var_type) %>% group_by(Type, var_type) %>% 
  mutate(label_to_show = n_distinct(groups))
cData1_mean1
# A tibble: 12 × 8
# Groups:   Type, var_type [4]
# Type  Deep   var_type Stripe_Angle  mean    sd groups label_to_show
# <chr> <chr>  <chr>           <int> <dbl> <dbl> <chr>          <int>
# 1 BT    Bottom ctValue           135  47.7  1.53 b                  2
# 2 BT    Center ctValue           135  40    4.36 b                  2
# 3 BT    Top    ctValue           135  61.7  7.02 a                  2
# 4 CK    Bottom ctValue           135  42    7.21 a                  1
# 5 CK    Center ctValue           135  38.3  2.08 a                  1
# 6 CK    Top    ctValue           135  46.7  7.57 a                  1
# 7 BT    Bottom ftValue           135  48    1    b                  2
# 8 BT    Center ftValue           135  49.3  8.02 b                  2
# 9 BT    Top    ftValue           135  77    3.61 a                  2
# 10 CK    Bottom ftValue           135  48    4.36 a                  1
# 11 CK    Center ftValue           135  47.7  5.13 a                  1
# 12 CK    Top    ftValue           135  53.7 12.3  a                  1
  • 需要注意的是:这里添加了label_to_show一列,目的是为了后续再进行字母标签添加时可以识别没有显著性的结果。

组间t-test

cData1_summary <- cData1 %>%
  gather(key = "var_type", value = "value", 3:4) %>% 
  # unite("unique_col", c(Type, Deep), sep = "-") %>% unique_col
  group_by(Deep, var_type) %>%
  summarize(
    p_value = round(t.test(value ~ Type)$p.value, 2)
  ) %>%
  mutate(
    label = ifelse(p_value <= 0.001, "***",
                   ifelse(p_value <= 0.01, "**", 
                          ifelse(p_value <= 0.05, "*", 
                                 ifelse(p_value <= 0.1, "●", NA))))
  )
cData1_summary
# Deep   var_type p_value label
# <chr>  <chr>      <dbl> <chr>
# 1 Bottom ctValue     0.31 NA   
# 2 Bottom ftValue     1    NA   
# 3 Center ctValue     0.59 NA   
# 4 Center ftValue     0.78 NA   
# 5 Top    ctValue     0.07 ●    
# 6 Top    ftValue     0.07 ● 

我们将计算出来的p值,并用* 或者 ●进行了赋值。然后合并相关结果:

cData1_summary1 <- left_join(cData1_mean1, cData1_summary, by = c("Deep", "var_type"))
cData1_summary1
# Type  Deep   var_type Stripe_Angle  mean    sd groups label_to_show p_value label
# <chr> <chr>  <chr>           <int> <dbl> <dbl> <chr>          <int>   <dbl> <chr>
# 1 BT    Bottom ctValue           135  47.7  1.53 b                  2    0.31 NA   
# 2 BT    Center ctValue           135  40    4.36 b                  2    0.59 NA   
# 3 BT    Top    ctValue           135  61.7  7.02 a                  2    0.07 ●    
# 4 CK    Bottom ctValue           135  42    7.21 a                  1    0.31 NA   
# 5 CK    Center ctValue           135  38.3  2.08 a                  1    0.59 NA   
# 6 CK    Top    ctValue           135  46.7  7.57 a                  1    0.07 ●    
# 7 BT    Bottom ftValue           135  48    1    b                  2    1    NA   
# 8 BT    Center ftValue           135  49.3  8.02 b                  2    0.78 NA   
# 9 BT    Top    ftValue           135  77    3.61 a                  2    0.07 ●    
# 10 CK    Bottom ftValue           135  48    4.36 a                  1    1    NA   
# 11 CK    Center ftValue           135  47.7  5.13 a                  1    0.78 NA   
# 12 CK    Top    ftValue           135  53.7 12.3  a                  1    0.07 ● 
  • 需要注意的是:添加的label也是为了后续筛选掉没有显著性结果做准备。

图a可视化过程

ctValue <- ggplot(
  data = cData1_mean1 %>% 
    filter(var_type == "ctValue") %>% 
    mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))), 
  aes(x = Type, y = mean, fill = Deep, pattern = Type, width = 0.75)
  ) +
  
  geom_bar_pattern(
    position = position_dodge(preserve = "single"),
    stat = "identity",
    pattern_fill = "white", 
    pattern_color = "white", 
    pattern_angle = -50,
    pattern_spacing = 0.05,
    color = "grey",
    width = 0.75
    ) +
  scale_pattern_manual(
    values = c(CK = "stripe", BT = "none")
    ) +
  
  geom_errorbar(
    data = cData1_mean %>% 
      filter(var_type == "ctValue") %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))), 
    aes(x = Type, y = mean, ymin = mean - sd, ymax = mean + sd, width = 0.2),
    position = position_dodge(0.75),
    )+

  geom_point(
    data = cData1 %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))),
    aes(x = Type, y = ctValue, group = Deep), color = "black", fill = "#D2D2D2", shape = 21,
    position = position_dodge(0.75), size = 3
    )+
  
  geom_text(
    data = cData1_mean1 %>% 
      filter(var_type == "ctValue",
             label_to_show > 1) %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))),
    aes(x = Type, y = mean + sd, label = groups), 
    position = position_dodge(0.75), vjust = -0.5, size = 5
    ) +
  
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ctValue"),
    aes(x = 0.75, xend = 0.75, y = 73, yend = 76)
  )+
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ctValue"),
    aes(x = 0.75, xend = 1.75, y = 76, yend = 76)
  )+
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ctValue"),
    aes(x = 1.75, xend = 1.75, y = 73, yend = 76)
  )+
  
  geom_text(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ctValue"),
    aes(x = 1.25, y = 76, label = paste0("p = ", p_value)),
    vjust = -0.5, size = 5
    )+
  
  geom_text(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ctValue"),
    aes(x = 1.25, y = 78, label = label),
    vjust = -1, size = 5
  )+
  
  scale_fill_manual(
    values = c("#393939", "#A2A2A2", "#CCCCCC")
    ) +
    
  scale_y_continuous(
    expand = c(0, 0), limits = c(0, 100), breaks = seq(0, 100, 50)
    ) +

  theme_classic()+
  theme(
    legend.position = "top",
        axis.ticks.length.y = unit(0.2, "cm"),
        axis.text.y = element_text(color = "black", size = 12),
        axis.title.y = element_text(color = "black", size = 12, face = "bold"),
        axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.line.x = element_blank(),
        axis.ticks.x = element_blank(),
    plot.margin = margin(t = 0, r = 0, b = 1, l = 0, "lines")
    )+
  labs(y = "CTvalue", fill = "", pattern = "");ctValue

在这里插入图片描述

图b可视化过程

ftValue <- ggplot(
  data = cData1_mean1 %>% 
    filter(var_type == "ftValue") %>% 
    mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))), 
  aes(x = Type, y = mean, fill = Deep, pattern = Type, width = 0.75)
) +
  
  geom_bar_pattern(
    position = position_dodge(preserve = "single"),
    stat = "identity",
    pattern_fill = "white", 
    pattern_color = "white", 
    pattern_angle = -50,
    pattern_spacing = 0.05,
    color = "grey",
    width = 0.75
  ) +
  scale_pattern_manual(
    values = c(CK = "stripe", BT = "none")
  ) +
  
  geom_errorbar(
    data = cData1_mean %>% 
      filter(var_type == "ftValue") %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))), 
    aes(x = Type, y = mean, ymin = mean - sd, ymax = mean + sd, width = 0.2),
    position = position_dodge(0.75),
  )+
  
  geom_point(
    data = cData1 %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))),
    aes(x = Type, y = ftValue, group = Deep), color = "black", fill = "#D2D2D2", shape = 21,
    position = position_dodge(0.75), size = 3
  )+
  
  geom_text(
    data = cData1_mean1 %>% 
      filter(var_type == "ftValue",
             label_to_show > 1) %>% 
      mutate(Deep = factor(Deep, levels = c("Top", "Center", "Bottom"))),
    aes(x = Type, y = mean + sd, label = groups), 
    position = position_dodge(0.75), vjust = -0.5, size = 5
  ) +
  
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ftValue"),
    aes(x = 0.75, xend = 0.75, y = 85, yend = 88)
  )+
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ftValue"),
    aes(x = 0.75, xend = 1.75, y = 88, yend = 88)
  )+
  geom_segment(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ftValue"),
    aes(x = 1.75, xend = 1.75, y = 85, yend = 88)
  )+
  
  geom_text(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ftValue"),
    aes(x = 1.25, y = 88, label = paste0("p = ", p_value)),
    vjust = -0.5, size = 5
  )+
  
  geom_text(
    data = cData1_summary1 %>% 
      filter(p_value <= 0.1 & var_type == "ftValue"),
    aes(x = 1.25, y = 90, label = label),
    vjust = -1, size = 5
  )+
  
  scale_fill_manual(
    values = c("#393939", "#A2A2A2", "#CCCCCC")
  ) +
  
  scale_y_continuous(
    expand = c(0, 0), limits = c(0, 100), breaks = seq(0, 100, 50)
  ) +
  
  theme_classic()+
  theme(
    legend.position = "top",
    axis.ticks.length.y = unit(0.2, "cm"),
    axis.text.y = element_text(color = "black", size = 12),
    axis.title.y = element_text(color = "black", size = 12, face = "bold"),
    axis.title.x = element_blank(),
    axis.text.x = element_blank(),
    axis.line.x = element_blank(),
    axis.ticks.x = element_blank()
  )+
  labs(y = "FTvalue", fill = "", pattern = "");ftValue

在这里插入图片描述

合并图ab

ggarrange(ctValue, ftValue, nrow = 2, ncol = 1, labels = c ("A", "B"),
          align = "hv", common.legend = T)

在这里插入图片描述
使用ggpubr包中的ggarrange函数完成拼图。

复现效果还是比较完美的。中间可视化代码细节比较多,大家可以自行学习,可以留言提问答疑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/112250.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库入门到精通——运维篇(1)

MySQL数据库入门到精通——运维篇&#xff08;1&#xff09; 1. 日志1.1 错误日志1.2 二进制日志1.3 查询日志1.4 慢查询日志 2. 主从复制2.1 主从复制的概述2.2 主从复制的原理2.3 主从复制的搭建2.3.1 服务器准备2.3.2 主库配置2.3.3 从库配置2.3.4 测试 1. 日志 在任何一种…

力扣:147. 对链表进行插入排序(Python3)

题目&#xff1a; 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。每次迭代中&#xff0c…

C++归并排序算法的应用:计算右侧小于当前元素的个数

题目 给你一个整数数组 nums &#xff0c;按要求返回一个新数组 counts 。数组 counts 有该性质&#xff1a; counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,6,1] 输出&#xff1a;[2,1,1,0] 解释&#xff1a; 5 …

Latex排版SIGGRAPH总结(持续总结中...)

本文学习总结自&#xff1a;How to use the ACM SIGGRAPH / TOG LaTeX template 相关文件&#xff1a;百度网盘 首先解压 “my paper” 中的文件&#xff0c;并用Latex打开mypaper.tex. 多行连等公式 \begin{equation}表示编号公式&#xff0c;\[ \]表示无编号公式 无编号\b…

折纸达珠峰高度(forwhile循环)

对折0.1mm厚度的纸张多少次&#xff0c;高度可达珠峰高度8848180mm。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅…

数据库面试题整理

目录 MySQL事务隔离级别有哪几种&#xff1f;MySQL的常用的存储引擎有哪些&#xff1f;特点是什么&#xff0c;分别适合什么场景下使用MySQL有数据缓存吗&#xff1f;原理是怎么样的&#xff1f;InnoDB的缓冲池默认是开启的吗&#xff1f;基本原理是什么&#xff1f;会有脏数据…

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路(更新中)

【MATLAB第81期】基于MATLAB的LSTM长短期记忆网络预测模型时间滞后解决思路&#xff08;更新中&#xff09; 在LSTM预测过程中&#xff0c;极易出现时间滞后&#xff0c;类似于下图&#xff0c;与一个以上的样本点结果错位&#xff0c;产生滞后的效果。 在建模过程中&#xf…

7 款用于训练 AI 模型的合成数据工具

什么是合成数据&#xff1f; 合成数据是计算机模拟或算法生成的注释信息&#xff0c;作为真实世界数据的替代品。换句话说&#xff0c;合成数据是在数字世界中创建的&#xff0c;而不是从现实世界中收集或测量的。 合成数据的用例 为机器人开发软件只是合成数据的众多用例之…

el-tabel表格加个多选框

<template><div><el-checkbox v-model"checked" :disabled"checkedDis" change"onAllSelectChange">多选框</el-checkbox>点击多选框&#xff0c;禁用列表复选框<el-table ref"multipleTable" :data"…

高压发生器

直流高压试验装置产品简介 武汉凯迪正大KDZG系列直流高压发生器是按照中国行业标准ZGF24003-90《便携式直流高压发生器通用技术条件》的要求&#xff0c;研究、制造的便携式直流高压发生器&#xff0c;适用于电力部门、厂矿企业动力部门、科研单位、铁路、化工、发电厂等对氧化…

IntelliJ IDEA快捷键sout不生效

1.刚下载完idea编辑器时&#xff0c;可能idea里的快捷键打印不生效。这时你打开settings 2.点击settings–>Live Templates–>找到Java这个选项&#xff0c;点击展开 3.找到sout 4.点击全选&#xff0c;保存退出就可以了 5.最后大功告成&#xff01;

【44.全排列Ⅱ】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:vector<vector<int>> ret;vector<int> path;vector<bool> check;vector<vector<int>> permuteUnique(vector<int>&am…

OSATE总线延迟的源码分析与模型修复——针对 Latency-case-study项目 端到端流延迟分析过程中空指针异常的解决

一、背景 在文章AADL 端到端流延迟分析示例项目 Latency-case-study 简述的 “第八章 进行系统的端到端流延迟分析” 中&#xff0c;遇到了这样的一个问题&#xff1a;对分布式系统的端到端流延迟进行分析时&#xff0c;没有生成流延迟分析报告&#xff0c;并且错误日志提示&am…

Python数据分析(四)-- 操作Excel文件

1 操作Excel文件-多种实现方式 在实际生产中&#xff0c;经常会用到excel来处理数据&#xff0c;虽然excel有强大的公式&#xff0c;但是很多工作也只能半自动化&#xff0c;配合Python使用可以自动化部分日常工作&#xff0c;大大提升工作效率。 openpyxl&#xff1a;只允许读…

初识JavaScript(一)

文章目录 一、JavaScript介绍二、JavaScript简介1.ECMAScript和JavaScript的关系2.ECMAScript的历史3.什么是Javascript&#xff1f;4.JavaScript的作用?5.JavaScript的特点 三、JavaScript基础1.注释语法2.JavaScript的使用 四、JavaScript变量与常量变量关键字var和let的区别…

Android广播BroadcastReceiver

BroadcastReceiver组件 BroadcastReceiver是Android中的一个组件&#xff0c;用于接收和处理系统广播或应用内广播。它可以监听系统事件或应用内自定义的广播&#xff0c;并在接收到广播时执行相应的操作。 广播是一种用于在应用组件之间传递消息的机制。通过发送广播&#x…

RT-DERT:在实时目标检测上,DETRs打败了yolo

文章目录 摘要1、简介2. 相关研究2.1、实时目标检测器2.2、端到端目标检测器2.3、用于目标检测的多尺度特征 3、检测器的端到端速度3.1、 NMS分析3.2、端到端速度基准测试 4、实时DETR4.1、模型概述4.2、高效的混合编码器4.3、IoU-aware查询选择4.4、RT-DETR的缩放 5、实验5.1、…

Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273)解决方法

前言&#xff1a; 在一次漏洞扫描中&#xff0c;扫描出紧急漏洞Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273) 根据修复建议找补丁。 一、漏洞详情 二、寻找补丁 根据漏洞修复建议去下载补丁 目前厂商已发布升级补丁以修复漏洞&#xff0c;补丁获取链接&#xff1a;h…

k8s中kubectl命令式对象、命令式对象配置、声明式对象配置管理资源介绍

目录 一.kubernetes资源管理简介 二.三种资源管理方式优缺点比较 三.命令式对象管理介绍 1.kubectl命令语法格式 2.资源类型 &#xff08;1&#xff09;通过“kubectl api-resources”来查看所有的资源 &#xff08;2&#xff09;每列含义 &#xff08;3&#xff09;常…

【Docker】十分钟完成mysql8安装,你也可以的!!!

十分钟完成mysql8安装&#xff0c;你也可以的 前言安装步骤1.创建安装目录2.创建docker-compose.yml3.启动容器4.mysql开启远程连接5.连接mysql 总结 前言 本文基于Docker安装mysql:8.0.29&#xff0c;首先确保系统安装了docker和docker-compose。 没有使用过docker朋友可以去…