是否有 R 函数来调整条形图的轴比例?
Posted
技术标签:
【中文标题】是否有 R 函数来调整条形图的轴比例?【英文标题】:Is there an R function to adjust scale in the axis for a barchart? 【发布时间】:2021-11-27 04:27:09 【问题描述】:我有一个名为 crash_deaths_injuries_TA_pop 的数据框,看起来像:
TA_name | Population |
---|---|
Gore | 34466 |
Buller | 444444 |
Cluth | 34455 |
我试图用条形图显示数据,但是,x 轴的比例搞砸了,我不知道该怎么做。我知道这一定很容易,但我是编码新手,所以我很挣扎。
这是我的条形图代码:
ggplot(crashes_deaths_injuries_TA_pop, aes(x = reorder(TA_name, Population), y = Population, fill = Population)) +
geom_col(alpha = 0.7) +
scale_fill_distiller(palette = "Reds", direction = 1) +
coord_flip() +
labs(x = "", y = "Population", fill = "Population",
title = "Populations of South Island TA's | 2018",
caption = "Data: Census 2018, StatsNZ") +
theme_minimal() +
theme(legend.position = "none")
我还想知道如何在每个 TA_name 的每个条的末尾添加一个像人口这样的数字
【问题讨论】:
是刻度还是科学记数法“搞砸了”? (参见例如***.com/questions/5352099/…) 我已经删除了科学记数法,但现在我想编辑中断,这会是用中断命令吗? 【参考方案1】:使用scale_y_continuous(breaks = )
编辑您的x 轴刻度并使用geom_text
在条形图旁边添加Population
。这是一个例子。
ggplot(crashes_deaths_injuries_TA_pop, aes(x = reorder(TA_name, Population), y = Population, fill = Population)) +
geom_col(alpha = 0.7) +
scale_fill_distiller(palette = "Reds", direction = 1) +
coord_flip() +
labs(x = "", y = "Population", fill = "Population",
title = "Populations of South Island TA's | 2018",
caption = "Data: Census 2018, StatsNZ") +
theme_minimal() +
theme(legend.position = "none") +
scale_y_continuous(breaks = seq(0, 5e05, 0.5e05)) + geom_text(aes(label = Population, y = Population+0.18e05))
【讨论】:
能否解释一下 scale_y_continuous 的 "0, 5e05, 0.5e05" 和 geom_text 的 "+0.18e05" 仅供将来使用,不太确定 @scumbagsurfer 首先,breaks = seq(0, 5e05, 0.5e05)
标记 x 轴。如您所见,刻度是50000 = 0.5e05, 1e05, 1.5e05, ...
的序列。您可以通过更改0.5e05
来更改刻度之间的间距。其次,添加+0.18e05
来移动文本的位置,使数字不与条重叠。我手动测试了几个数字并为您找到合适的数字。以上是关于是否有 R 函数来调整条形图的轴比例?的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化水平条形图(horizontal bar plot)设置水平条形图的轴文本标签左对齐(axis lables left align in horizontal bar)
R语言使用vcd包的spine函数可视化spinogram图(spinogram图是被归一化的堆叠条形图这样每个条形的高度一样内部显示不同分布的比例)