R:在同一图表上绘制不同大小的列

Posted

技术标签:

【中文标题】R:在同一图表上绘制不同大小的列【英文标题】:R: Plotting Columns of Different Sizes on Same Graph 【发布时间】:2021-12-11 10:44:21 【问题描述】:

我正在使用 R 编程语言。我有两个数据集:

第一个数据集:

my_data_1 <- data.frame(read.table(header=TRUE,
row.names = 1,
text="

  height    weight    age
1  13.14600 2882.7709  49
2  12.65080 3183.7991  48
3  13.84154 3138.2280  48
4  15.25780 2786.5297  49
5  15.01213 3006.9687  50
6  14.37567 3286.9644  50
7  12.99385 2881.7667  51
8  15.38893 2916.1883  50
9  14.80093 2791.7292  49
10 15.40423 2427.7706  50
11 17.55129  630.8886  20
12 18.34758 1076.6810  19
13 16.37789 1778.5550  20
14 14.98782 1401.4328  17
15 17.40527  361.3323  20
16 16.53979  869.5829  21
17 16.61986 1712.1686  19
18 17.78508 1961.6090  20
19 16.83144 1043.5052  19
20 18.66166  360.3037  20
                      
"))

第二个数据集:

prior_age = rnorm(100000, 50,5)
   prior_height = rnorm(100000, 17,1)
  prior_weight = rnorm(100000, 3000, 200)

my_data_2 = data.frame(prior_age, prior_height, prior_weight)

(基于这篇文章的答案:ggplot combining two plots from different data.frames)我试图在同一张图上绘制两个数据集的高度变量的“密度”。但是,两个数据集的行数不同。

我在 R 中尝试了以下代码:

    library(ggplot2)
   ggplot() + 
    geom_density(data=my_data1, aes(x=height), color='green') + 
    geom_density(data=my_data2, aes(x=prior_height), color='red')

但这会产生以下错误:

Error: Aesthetics must be either length 1 or the same as the data (20): x

谁能告诉我如何解决这个问题?

谢谢!

【问题讨论】:

在您的ggplot 代码中添加_ 后(我认为这是错字)它对我有用。 @朴:谢谢你的回复!我不确定我是否完全理解 - 我需要在此代码中的何处添加“_”?谢谢! 可能会出现您的问题,也可能不会。我不确定,但在geom_density(...) 部分,您提供的代码是data = my_data1,但您制作的数据是my_data_1_ 不见了…… 哦,好吧!这解决了问题!有没有办法添加一个图例? *绿色=测量值,红色=先验”? 我可以改变数据的形状来添加图例吗? 【参考方案1】:

嗯,根据您提供的代码,我不需要更改数据的形状。只需使用guides(... = guide_legend(title = ...))scale_colour_discrete 手动更改图例的组件。

ggplot() + 
  geom_density(data=my_data_1, aes(x=height), color='green') + 
  stat_density(data = my_data_1, aes(x=height, colour="red"), geom="line",position="identity") + 
  geom_density(data=my_data_2, aes(x=prior_height), color='red') + 
  stat_density(aes(x=prior_height, colour='green'), geom="line",position="identity") +
  guides(colour = guide_legend(title = "new title"),) +
  scale_colour_discrete(labels = c( "prior", "measurements"))

【讨论】:

@朴:谢谢你的回答!有没有办法用“传奇”替换“新标题”? @stats555 只需将 new title 文本更改为您想要的任何内容。

以上是关于R:在同一图表上绘制不同大小的列的主要内容,如果未能解决你的问题,请参考以下文章

将时间数据 CSV 拆分为不同的年份并将它们绘制在一个图表中

在同一个 CSV 文件中保存多个不同大小的列/变量

(Perl 的)GD 图表 - 绘制数据的限制?

r 使用ggplot绘制Kaplan-Meier曲线。 ggkmTable.R在图表下方添加了一个表格,显示了不同时间的风险数字。

Pyqtgraph:在同一个图形窗口中实时绘制两个图形相同的X轴但两个不同的Y轴方向相反

有没有一种方法可以绘制 CSV 文件中的数据,其中每列中的每 10 个数据点是同一图表中的不同线?