为R中的每个客户端绘制不同颜色的折线图[重复]
Posted
技术标签:
【中文标题】为R中的每个客户端绘制不同颜色的折线图[重复]【英文标题】:Plot a line graph with different collors for each client in R [duplicate] 【发布时间】:2021-04-05 13:46:36 【问题描述】:我有一个数据框,它在每一行上存储一个客户端,在每一列中我都有一个模型,如下所示:
Client Model_1 Model_2 Model_3 Model_4 Model_5
1 10.34 0.22 0.62 0.47 1.96
2 0.97 0.60 0.04 0.78 0.19
3 2.01 0.15 0.27 0.49 0.00
4 0.57 0.94 0.11 0.66 0.00
5 0.68 0.65 0.26 0.41 0.50
6 0.55 3.59 0.06 0.01 5.50
7 10.68 1.08 0.07 0.16 0.20
我需要绘制一个折线图,其中每个客户端都是一条线,x 轴是模型(只是名称)
我用 ggplot2 搜索了一些示例,但只使用列作为线条,我无法按照我想要的方式进行操作,所以我在这里,谢谢。
【问题讨论】:
这可能会有所帮助:Plotting two variables as lines using ggplot2 on the same graph。您需要按照此答案中的描述将数据从宽格式重新调整为长格式:***.com/a/3777592/8583393 【参考方案1】:我们可以从base R
使用matplot
(不使用包)
matplot(`colnames<-`(t(df1[-1]), df1$Client), type = 'l', ylab = 'value')
legend("top", colnames(df1[-1]),col=df1$Client,cex=0.8,fill=df1$Client)
-输出
数据
df1 <- structure(list(Client = 1:7, Model_1 = c(10.34, 0.97, 2.01, 0.57,
0.68, 0.55, 10.68), Model_2 = c(0.22, 0.6, 0.15, 0.94, 0.65,
3.59, 1.08), Model_3 = c(0.62, 0.04, 0.27, 0.11, 0.26, 0.06,
0.07), Model_4 = c(0.47, 0.78, 0.49, 0.66, 0.41, 0.01, 0.16),
Model_5 = c(1.96, 0.19, 0, 0, 0.5, 5.5, 0.2)), class = "data.frame",
row.names = c(NA,
-7L))
【讨论】:
对不起,我写错了问题,但我编辑了它 我真的很想用 ggplot2 来获得一些更漂亮的图,这是为了演示,但谢谢【参考方案2】:试试这个。 ggplot2
的关键正在重塑为 long,因为他的评论中引用了 @markus:
library(dplyr)
library(tidyr)
library(ggplot2)
#Code
df %>% pivot_longer(-Client) %>%
ggplot(aes(x=name,y=value,color=factor(Client),group=factor(Client)))+
geom_line()+
xlab('Client')+
theme_bw()+
labs(color='Client')
输出:
使用的一些数据:
#Data
df <- structure(list(Client = 1:7, Model_1 = c(10.34, 0.97, 2.01, 0.57,
0.68, 0.55, 10.68), Model_2 = c(0.22, 0.6, 0.15, 0.94, 0.65,
3.59, 1.08), Model_3 = c(0.62, 0.04, 0.27, 0.11, 0.26, 0.06,
0.07), Model_4 = c(0.47, 0.78, 0.49, 0.66, 0.41, 0.01, 0.16),
Model_5 = c(1.96, 0.19, 0, 0, 0.5, 5.5, 0.2)), class = "data.frame", row.names = c(NA,
-7L))
【讨论】:
这行得通,但在我的问题中,我有 30 个客户,所以情节变得非常混乱,你知道有什么办法让它更漂亮吗? @ArturBraga 你是说传说吗?那样的话你会得到一个乱七八糟的传说,或者你说的乱七八糟是指什么? 我的意思是线条......但我想没有办法让情节中的 30 行不要变得混乱 无论如何,谢谢:) 另一个认为你可以做的是将客户分成两组并使用 facet_wrap()以上是关于为R中的每个客户端绘制不同颜色的折线图[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python使用matplotlib函数subplot可视化多个不同颜色的折线图在折线图上为每个数据点添加日期数据标签
Python使用matplotlib函数subplot可视化多个不同颜色的折线图为指定的子图添加图例信息(legend)
Python使用matplotlib函数subplot可视化多个不同颜色的折线图为多个子图添加总标题(main title)