【问题标题】:Bringing one line to front and change to dashed将一条线放在前面并更改为虚线
【发布时间】:2022-09-23 00:53:50
【问题描述】:

我正在尝试编辑我当前的代码以将“ECHO Fit”(见下文)行放在前面并使其成为“longdash”。所有颜色和其他线条格式保持不变。

额外:我实际上也在尝试从图表中删除“大小 0.5”,并且每 12 个单位有一个 x 轴刻度(第一个刻度在 12,最后一个刻度在 72)......如果有人可以帮忙也有这个问题。

这是我的数据框的样子:

  gene_id       X12        X14        X16        X18        X20        X22          X24          X26        X28        X30
1     Rep2 0.7736722  0.4895358 -0.1152436 -0.5861007 -0.5185535 -0.4028582 -0.209116905  0.043706646 -0.0558864 -0.3015712
2     Rep3 0.2103065 -0.1527386 -0.4639241 -0.3344614  0.1491652  0.3355411  0.003713116 -0.466451880 -0.4138540  0.2252987
3 ECHO Fit 1.0061474  0.4496992 -0.1188764 -0.5488580 -0.7423424 -0.6742235 -0.390867010  0.009849424  0.4098608  0.7041348
         X32       X34       X36       X38         X40        X42        X44        X46         X48         X50         X52
1 0.06774353 0.5337989 0.7879655 0.9193020 -0.07623785 -0.8137335 -0.5964319 -0.7249979 -0.69457607 -0.32543356 -0.02661936
2 0.61276259 0.6278027 0.7112873 0.5867178 -0.03538973 -0.4893360 -0.5010887 -0.2860915  0.04822184 -0.08333534 -0.43714633
3 0.82685230 0.7644355 0.5534309 0.2654520 -0.01545444 -0.2162454 -0.2928780 -0.2387261 -0.08225048  0.12429807  0.32119703
         X54        X56        X58        X60       X62         X64         X66         X68          X70         X72
1  0.3506349  0.4740629  0.4997113 0.73874098 0.5660296 -0.08397613 -0.23776407  0.14677824 -0.019013891 -0.55853824
2 -0.4050637 -0.2733731 -0.1443974 0.05656335 0.4104595  0.45333028  0.01404726 -0.12725196 -0.000176578  0.07900585
3  0.4577582  0.5046638  0.4593446 0.34374438 0.1958867  0.05813341 -0.03441813 -0.06236729 -0.025399781  0.05970666

这是我的图表目前的样子:

这是我的代码:

library(tidyverse)
Graph4_Clock <- read.csv(\"Graph4_Clock.csv\")

Graph4_Clock |>
  pivot_longer(cols = contains(\"X\"), names_to = \"HPS\", values_to = \"Zscore\")|>
  mutate(HPS = parse_number(HPS))|>
  ggplot(aes(x = HPS, y = Zscore, color = gene_id))+
  geom_point()+
  geom_line(aes(group=gene_id,size=.5,))+
  ggtitle(\"Clock\")+
  scale_color_manual(values = c(\"black\", \"orange\", \"blue\"))+
  theme_bw()+
  theme(legend.position = \"bottom\", axis.text = element_text(size = 20), axis.text.x = element_text(size = 20), axis.text.y = element_text(size = 20), axis.title = element_text(size = 20), plot.title = element_text(size = 20), legend.text = element_text(size = 20), legend.direction = \"horizontal\")
  • 请提供可重现的例子
  • @yuliaUU,它有什么不可复制的?如果您有问题或建议,如果您对这样的 cmets 有专门的了解,它将对新用户有所帮助。
  • @Numbahs84,对于未来,样本数据很好,但对于某些人来说只是一个难以导入的 skosh。即:(1)当frames\'列在此处被包装时,需要手动编辑原始文本以使其达到我们可以尝试在其上使用read.table的程度; (2) 当任何单元格内容包含嵌入空格时(如\"ECHO Fit\"),这会破坏read.table,需要进一步的手动干预。像上面那样显示帧输出不是问题,而是提供完全明确的格式(例如来自dput(.) 的输出真的真的有帮助,更容易回答。谢谢!

标签: r ggplot2 format linegraph


【解决方案1】:

三件事:

  • 为了保证 z 水平(在图上“在顶部”),确实需要单独绘制每组线,其中最后绘制的是“在顶部”;我们可以为此使用data=~subset(., gene_id=...),并使用两个geom_line 层。
  • 我将size=0.5 移出aes(.),这样它就不会创建单例图例。这会使线条达到您期望的实际宽度(文字0.5,副变量是相同的分类变量"0.5",适用于所有线条)。
  • 通过添加linetype=gene_id(同时添加geom_lines)来设置"longdash" 非常简单。
  • 使用scale_x_continuous(breaks=.) 控制x 轴。
  • 我冒昧地:将名称添加到您的scale_color_manual,以便颜色/线型图例结合起来;添加guides(.) 使图例线条更粗,只是一个想法,不是必需的。
  • 仅供参考,geom_point() 完全被屏蔽了...
Graph4_Clock |>
  pivot_longer(cols = contains("X"), names_to = "HPS", values_to = "Zscore")|>
  mutate(HPS = readr::parse_number(HPS)) |>
  ggplot(aes(x = HPS, y = Zscore, color = gene_id)) +
  # geom_point() + # doing nothing here, covered by the lines
  geom_line(aes(group=gene_id, linetype=gene_id), size = 0.5, data = ~ subset(., gene_id != "ECHO Fit")) +
  geom_line(aes(group=gene_id, linetype=gene_id), size = 0.5, data = ~ subset(., gene_id == "ECHO Fit")) +
  ggtitle("Clock") +
  scale_color_manual(values = c("Rep2" = "black", "Rep3" = "orange", "ECHO Fit" = "blue")) +
  scale_linetype_manual(values = c("Rep2" = "solid", "Rep3" = "solid", "ECHO Fit" = "longdash")) +
  scale_x_continuous(breaks = seq(12, 72, by = 5)) +
  theme_bw() +
  guides(color = guide_legend(override.aes = list(size = 2))) +
  theme(
    legend.position = "bottom",
    axis.text = element_text(size = 20), axis.text.x = element_text(size = 20),
    axis.text.y = element_text(size = 20), axis.title = element_text(size = 20),
    plot.title = element_text(size = 20),
    legend.text = element_text(size = 20), legend.direction = "horizontal")


数据

Graph4_Clock <- structure(list(gene_id = c("Rep2", "Rep3", "ECHO Fit"), X12 = c(0.7736722, 0.2103065, 1.0061474), X14 = c(0.4895358, -0.1527386, 0.4496992), X16 = c(-0.1152436, -0.4639241, -0.1188764), X18 = c(-0.5861007, -0.3344614, -0.548858), X20 = c(-0.5185535, 0.1491652, -0.7423424), X22 = c(-0.4028582, 0.3355411, -0.6742235), X24 = c(-0.209116905, 0.003713116, -0.39086701), X26 = c(0.043706646, -0.46645188, 0.009849424), X28 = c(-0.0558864, -0.413854, 0.4098608), X30 = c(-0.3015712, 0.2252987, 0.7041348),      X32 = c(0.06774353, 0.61276259, 0.8268523), X34 = c(0.5337989, 0.6278027, 0.7644355), X36 = c(0.7879655, 0.7112873, 0.5534309), X38 = c(0.919302, 0.5867178, 0.265452), X40 = c(-0.07623785, -0.03538973, -0.01545444), X42 = c(-0.8137335, -0.489336, -0.2162454), X44 = c(-0.5964319, -0.5010887, -0.292878), X46 = c(-0.7249979, -0.2860915, -0.2387261), X48 = c(-0.69457607, 0.04822184, -0.08225048), X50 = c(-0.32543356, -0.08333534, 0.12429807), X52 = c(-0.02661936, -0.43714633, 0.32119703), X54 = c(0.3506349,      -0.4050637, 0.4577582), X56 = c(0.4740629, -0.2733731, 0.5046638), X58 = c(0.4997113, -0.1443974, 0.4593446), X60 = c(0.73874098, 0.05656335, 0.34374438), X62 = c(0.5660296, 0.4104595, 0.1958867), X64 = c(-0.08397613, 0.45333028, 0.05813341), X66 = c(-0.23776407, 0.01404726, -0.03441813), X68 = c(0.14677824, -0.12725196, -0.06236729), X70 = c(-0.019013891, -0.000176578, -0.025399781), X72 = c(-0.55853824, 0.07900585, 0.05970666)), row.names = c("1", "2", "3"), class = "data.frame")

【讨论】:

  • 谢谢!效果很好:)
  • 请重新加载@yuliaUU,它就在那里。它(基于OP)即使没有structure(.),也可以完全重现,尽管只需要一点肘部油脂即可使其工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
相关资源
最近更新 更多