r语言作图,数据为三列dataframe第一列为横坐标名字,第二列画柱状图,第三列在第二列的基础上画折线图,且第二列和第三列的纵坐标数值不同,按照其纵坐标范围自适应,由于有44行数据,所以横坐标要紧凑才能画进去,横坐标名字旋转90度
时间: 2023-12-08 10:03:56 浏览: 94
可以使用ggplot2包来实现这个功能。首先需要将三列数据合并成一个长格式的数据框,然后使用geom_col()函数画柱状图,使用geom_line()函数在柱状图的基础上加上折线图。具体代码如下:
```r
library(ggplot2)
# 创建一个示例数据框
data <- data.frame(x = paste("category", 1:44),
y1 = rnorm(44, 10, 2),
y2 = rnorm(44, 20, 5))
# 将数据从宽格式转换为长格式
data_long <- tidyr::gather(data, "variable", "value", -x)
# 画图
ggplot(data_long, aes(x = x, y = value, fill = variable)) +
geom_col(data = subset(data_long, variable == "y1"), width = 0.5) +
geom_line(data = subset(data_long, variable == "y2"), color = "red", size = 1) +
scale_y_continuous(sec.axis = sec_axis(~., name = "y2")) +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) +
labs(x = "x", y = "y1")
```
其中,scale_y_continuous()函数用于添加第二个y轴,使得y2轴的纵坐标范围可以自适应,而且y2轴的名称可以自定义。theme()函数用于调整x轴标签的方向。labs()函数用于修改x轴和y轴的标签名称。
阅读全文