r语言,dataframe中有三列,将数据按照第二列的值从小到大排序,将第一列作为横轴名字,第二列画柱状图,第三列画折线图,且第二列纵坐标轴在左侧,第三列的纵坐标轴在右侧,
时间: 2023-12-04 08:03:03 浏览: 68
你可以使用ggplot2这个R语言中的数据可视化包来完成这个任务。以下是具体的代码实现过程:
首先,假设你的数据框名字为`df`,第一列的名字为`col1`,第二列的名字为`col2`,第三列的名字为`col3`。
```R
library(ggplot2)
# 按照第二列的值从小到大排序
df <- df[order(df$col2),]
# 绘制柱状图
p1 <- ggplot(df, aes(x=col1, y=col2)) +
geom_bar(stat="identity") +
ylab("col2") +
theme(axis.title.y=element_text(color="black"))
# 绘制折线图
p2 <- ggplot(df, aes(x=col1, y=col3)) +
geom_line(color="red") +
ylab("col3") +
theme(axis.title.y=element_text(color="red"))
# 将两个图合并
p <- ggarrange(p1, p2, ncol=1, nrow=2, heights=c(2,1))
# 设置第二列的纵坐标轴为左侧轴
p <- p + scale_y_continuous(name="col2",
sec.axis = sec_axis(~., name=""))
# 设置第三列的纵坐标轴为右侧轴
p <- p + scale_y_continuous(name="col3",
sec.axis = sec_axis(~., name="",
breaks=seq(min(df$col3), max(df$col3), length.out=5),
labels=paste0(round(seq(min(df$col3), max(df$col3), length.out=5), 1), "%")))
# 显示图形
print(p)
```
这段代码会首先按照第二列的值从小到大排序,然后绘制柱状图和折线图。其中柱状图的纵坐标轴在左侧,折线图的纵坐标轴在右侧,并且纵坐标轴上的标签显示的是百分比形式。最后,将两个图合并成一个,并且显示出来。
阅读全文