我想用ggplot2创建一个条形图,在这里我可以设置最小值,中间值和最大值(在我的例子中是:min = 0,mid = 50,max = 100)。对于每个值,我想关联一个比例梯度,其中0对应于蓝色,中间对应于黄色(或白色),100对应于红色。
我什么都没找到,你能帮我吗?
先谢谢你了。
下面是我尝试使用但不起作用的代码(我获得的条形图有灰色条)。
TPH <- ggplot(ser, aes(x= Stages, y= TPH))+
geom_bar(stat = "identity")+
scale_fill_gradient(low='blue', high='red')+
labs(y= expression("Counts per million (CPM)"), x = "Hours post fertilization (hpf)")+
ggtitle("Tryptophan Hydroxylase", subtitle = "TPH")+
theme(plot.title=element_text(hjust=0.5),
plot.subtitle=element_text(hjust=0.5))+
scale_y_continuous(limits=c(0, 100))+
scale_x_discrete(labels=c("hpf00" = "0", "hpf04" = "4", "hpf08" ="8", "hpf12"="12", "hpf16"="16", "hpf20"="20","hpf24"="24", "hpf28"="28", "hpf32"="32", "hpf36"="36","hpf40"="40", "hpf44"="44", "hpf48"="48", "hpf52"="52", "hpf72"="72"))
TPH
字符串
1条答案
按热度按时间sr4lhrrt1#
假设您的数据看起来像这样(请在接下来的问题中包含一些示例数据)
字符串
你可以在
Stages
的每个水平上生成一个从0到你的观察值的向量(按照这里提供的答案https://stackoverflow.com/a/71043558/15024678)。然后你可以解嵌套这些向量:型
这可以使用
geom_tile()
绘制,从而生成符合您描述的条形图。型
输出:
如果x轴上每个级别的最大值为100,则希望条形图完全为红色的修改方案
获取修改后的示例数据,使hpf 12的TPH = 100:
型
在生成包含从0到每个
TPH
水平的观测值的值的列之后,您可以生成一个用于着色的新列(TPH_fill
)。然后可以修改此列,以便如果TPH
为100,则它仅包含100(导致红色):型
使用
TPH_fill
作为fill
的参数绘图:型
输出:
如果您不想让颜色渐变沿着y轴,而是让条形按其最大值着色,则修改解决方案
您可以根据未修改的数据绘制
geom_col()
,并通过TPH
的值设置fill
:型
输出: