Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot中复制已发布的图像:堆叠条形图?_R_Ggplot2_Graph - Fatal编程技术网

R 在ggplot中复制已发布的图像:堆叠条形图?

R 在ggplot中复制已发布的图像:堆叠条形图?,r,ggplot2,graph,R,Ggplot2,Graph,我试图在ggplot中复制此图像: 图2b,来自Zak等人,2016年。见- 我最初尝试使用堆叠条形图,但我无法使箱子的宽度完全相同。条形图的本质似乎使每个类别都成为一个无法修改的集合大小 我将x轴设置为时间点,y轴设置为每个样本,颜色设置为值 我已经创造了一个连接线情节,并取得了一些成功;然而,我不认为它有同样的锐度,在那里看到的图像 是否有人建议我如何使用具有自定义高度的堆叠条形图在ggplot中重新创建此图形?还是我应该继续努力改进折线图 Code : ## Connecting Lin

我试图在ggplot中复制此图像:

图2b,来自Zak等人,2016年。见-

我最初尝试使用堆叠条形图,但我无法使箱子的宽度完全相同。条形图的本质似乎使每个类别都成为一个无法修改的集合大小

我将x轴设置为时间点,y轴设置为每个样本,颜色设置为值

我已经创造了一个连接线情节,并取得了一些成功;然而,我不认为它有同样的锐度,在那里看到的图像

是否有人建议我如何使用具有自定义高度的堆叠条形图在ggplot中重新创建此图形?还是我应该继续努力改进折线图

Code : ## Connecting Line chart  
 ggplot(groupC, aes(colour=value, y=sample, x=timepoint)) + 
  geom_line(size=12)  +
  theme(plot.title = element_text(hjust = 0.5,size=12)) +
  scale_colour_gradientn(colours = myPalette(100), limits=c(1, 80), na.value = NA, name="Value") +
  ylab("")  +
  theme_classic()

## Bar Chart    
ggplot(groupC_bar, aes(x=sample, y=timepoint, fill=value)) + 
geom_bar(stat="identity", colour="black")  +   coord_flip() 

Data
sample  timepoint   value
a1  m0  0
b2  m0  2
c3  m0  6
d4  m0  7
e5  m0  3
a1  m2  9
b2  m2  10
c3  m2  12
d4  m2  16
e5  m2  11
a1  m4  16
b2  m4  20
c3  m4  15
d4  m4  20
e5  m4  32
a1  m6  34
b2  m6  34
c3  m6  18
d4  m6  33
e5  m6  54

如果您希望提供这样的渐变填充外观,只需翻转坐标并堆叠条,使用填充美学中的自定义调色板:

my_palette <- colorRampPalette(c("red", "#DDDD00", "forestgreen"))

df <- data.frame(sample = rep(paste0(letters[1:5], 1:5), each = 100),
                 value  = rep(c(1, 0.8, 0.65, 1.3, 0.5), each = 100),
                 color =  factor(rep(my_palette(100), 5), my_palette(100)))

ggplot(df, aes(x = sample, y = value, fill = color)) +
  geom_col() +
  scale_fill_identity() +
  coord_flip() +
  theme_classic() +
  theme(axis.line.x  = element_blank(),
        axis.text.x  = element_blank(),
        axis.title.x = element_blank())


编辑

具有均匀箱子宽度的选项:

ggplot(groupC, aes(x = 1, y = sample, fill = value)) +
  geom_col() +
  scale_fill_gradientn(colours = c("forestgreen", "yellow", "red")) +
  scale_x_continuous(breaks = 1:4 - 0.5, labels = unique(groupC$timepoint)) +
  theme_classic() +
  labs(x = "timepoint")

谢谢您的回复。我举了一个例子,因为我不想发布大数据。我已经在我的数据上试过了,但仍然不正确,也许我不清楚。我希望值变量是彩色值,样本(Y)是时间点(X)。我有14个样本*8个时间点。如果我尝试第二个例子,我不容易看到更改的值,并且箱子的宽度取决于值中的数字。有没有办法为时间点和提供颜色的值设置一个固定的宽度?我好像连修改代码都找不到?是的!哦,哇,太完美了。我从来不知道你能这样休息。当我以不同的方式尝试它时,它就是不起作用。非常感谢,艾伦。我不想告诉你我今天在这上面浪费了多少时间。只是出于好奇,在x=1的情况下,有没有办法标记图表?例如,框及其值。这并不重要。我只是想确保自己完全理解,以便将来可以在不同的数据上重现。@lmrogers34是的。您应该能够指定<代码> GEOMUX文本<代码> >代码>位置=“填充”<代码>,以在框的中间获取标签。默认情况下,该位置设置为堆叠,因此x=1只允许一次堆叠一个单元的箱子,使它们具有相同的宽度。您可能还想查看plotting
geom_tile(aes(x=timepoint,y=sample,fill=value))
,这使得获得类似的绘图更加容易(尽管“条”之间没有完美的空格。我使用了:geom_text(aes(label=value),color=“black”,position=position_stack(vjust=0.5))这很好。我会搞乱geom_tile()并看看我能想出什么。再次感谢您清晰的代码和帮助。