Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 同一行中多个值的ggplot_R - Fatal编程技术网

R 同一行中多个值的ggplot

R 同一行中多个值的ggplot,r,R,我有一个数据框,在同一行中有多个值 index price 1 1000,2000,3000 2 2000,500 数据框有12行,并非所有price行的长度都相等。我想用索引沿x轴和价格沿y轴绘制索引与价格的对比图。我有以下代码- ggplot(data_m, aes(x = 1:12, y = data_m$price)) 我得到错误-错误:美学必须是长度1或与数据(12):y相同 如何绘制价格列中的每个值?也许您正在查找此值。您必须重塑数据,然后按照@t

我有一个数据框,在同一行中有多个值

index price

1   1000,2000,3000

2   2000,500
数据框有12行,并非所有
price
行的长度都相等。我想用
索引
沿x轴和
价格
沿y轴绘制
索引
价格
的对比图。我有以下代码-

ggplot(data_m,
   aes(x = 1:12,
       y = data_m$price))
我得到错误-
错误:美学必须是长度1或与数据(12):y相同


如何绘制价格列中的每个值?

也许您正在查找此值。您必须重塑数据,然后按照@thescigue所述的策略进行绘图。这里使用
tidyverse
方法,使用
separate_rows()
拆分行中的值,然后使用
full_join()
压缩所需的索引。接下来是代码:

library(tidyverse)
#Data and plot
df %>% separate_rows(price,sep=',') %>%
  mutate(price=as.numeric(price)) %>%
  full_join(data.frame(index=1:12)) %>%
  ggplot(aes(x=factor(index),y=price))+
  geom_point()+
  xlab('index')
输出:

使用的一些数据:

#Data
df <- structure(list(index = 1:2, price = c("1000,2000,3000", "2000,500"
)), class = "data.frame", row.names = c(NA, -2L))
输出:


Hi@Misha,您需要以整洁的格式获取数据。请参见此处:其中每列每行仅包含1个值。
#Data and plot 2
df %>% separate_rows(price,sep=',') %>%
  mutate(price=as.numeric(price)) %>%
  full_join(data.frame(index=1:12)) %>%
  ggplot(aes(x=factor(index),y=price,color=factor(index)))+
  geom_point()+
  xlab('index')+
  theme(legend.position = 'none')