gpt4 book ai didi

r - 以相反的方向创建水平条形图

转载 作者:行者123 更新时间:2023-12-01 10:27:24 24 4
gpt4 key购买 nike

我正在尝试在 R 中做一个金字塔“类似”的情节,我想我很接近。我知道有一些函数,例如 plotrix 的 pyramid.plot但我想做的不是真正的金字塔图。在金字塔图中,中间有文本标签,它们与左侧和右侧的条形对齐。相反,我想要做的是两列文本,条形远离它们。

我正在使用 ggplot(但我想我不必)和 multiplot功能。一个最小的例子是这样的:

mtcars$`car name` <- rownames(mtcars)
obj_a <- ggplot (mtcars, aes (x=`car name`, y=mpg))
obj_a <- obj_a + geom_bar (position = position_dodge(), stat="identity")
obj_a <- obj_a + coord_flip ()
obj_a <- obj_a + xlab ("")

USArrests$`states` <- rownames(USArrests)
obj_b <- ggplot (USArrests, aes (x=`states`, y=UrbanPop))
obj_b <- obj_b + geom_bar (position = position_dodge(), stat="identity")
obj_b <- obj_b + coord_flip ()
obj_b <- obj_b + xlab ("")

multiplot (obj_a, obj_b, cols=2)

看起来像这样:

Example graph

我想我想要的只是翻转左半部分,以便每一行都有(从左到右):左栏,汽车型号,州名,右栏。 (我制作的图形在两半中的行数相同,因此看起来不会那么局促。)但是,重点是,有两列文本,而不是一列。

当然,由于两半相互独立,我真正的问题是我不知道如何制作左半部分。 (一个条形图,条形向相反的方向延伸。)但我想我也会解释我想要做什么......

先感谢您!

最佳答案

您可以在 obj_a 中设置 mpg 值否定,& 将汽车名称轴定位在另一侧:

ggplot (mtcars, aes (x=`car name`, y=-mpg)) +         # y takes on negative values
geom_bar (position = position_dodge(), stat = "identity") +
coord_flip () +
scale_x_discrete(name = "", position = "top") + # x axis (before coord_flip) on opposite side
scale_y_continuous(name = "mpg",
breaks = seq(0, -30, by = -10), # y axis values (before coord_flip)
labels = seq(0, 30, by = 10)) # show non-negative values

obj_a

关于r - 以相反的方向创建水平条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46341962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com