首页 > 解决方案 > 使用ggplo2从csv文件中绘制R中的条形图/聚集柱形图

问题描述

我打算绘制一个条形图/聚集柱形图,用于时间与收入的关系,趋势线连接顶部的每个条形。从 1981 年到 1988 年。

我已使用此代码读取 csv :read.csv(file_location/Revenue.csv",header = T, sep=",", dec = ".")

对于绘图:pl <- ggplot(data,aes(x=ï..Year))

然后:pl + geom_bar(color='red',fill='blue')

不幸的是,我最终得到了这样的东西。然而,我更喜欢这样的东西。在这种情况下我只使用了ggplot2库,我是否应该另外使用 tidyr、diplyr?我在连续变量和离散变量之间误会了吗?任何关于美学修改以美化它的建议或有关此的解决方案将不胜感激,因为我仍然处于 ggplot 和数据可视化的基础知识。

如果您想检查它,我已经添加了罚款:Revenue.csv

标签: rcsvggplot2

解决方案


在此处查看文档以获取一些信息,但您应该做出的重大改变是使用geom_col. geom_bar您当前的调用指定了x=美学(x 轴应该是什么),但没有指定y=美学(y 轴应该是什么)。 geom_bar表示默认情况下每个 x 值处的案例/观察数,而geom_col用于在每个 x 值处显示长度为 y 的条形...但您需要 y 美学。

说了这么多,试试这个:

pl <- ggplot(data,aes(x=ï..Year, y=your.y.column.name)) +
    geom_col(color='red',fill='blue')

至于美学,我可能会稍微改变配色方案和主题,但这是个人喜好。我的建议是至少改变你的配色方案geom_bar/col。指定条的color=轮廓, 是条fill=的颜色。你的代码会给你带有红色轮廓的亮蓝色条......不是很棒。我还将通过将width=参数从默认值 1 调整为更小的值来将条形 a 的宽度更改为更窄。这是一个带有虚拟数据集的示例。大多数人(包括我)不想通过链接下载其他人的数据,抱歉。

df <- data.frame(x=1:10, y=1:10)
ggplot(df, aes(x=x, y=y)) +
    geom_col(fill='steelblue', color='black', width=0.5) +
    theme_bw()

在此处输入图像描述


推荐阅读