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 GG在x轴上用字符串打印_R_Plot_Ggplot2_Dataframe - Fatal编程技术网

R GG在x轴上用字符串打印

R GG在x轴上用字符串打印,r,plot,ggplot2,dataframe,R,Plot,Ggplot2,Dataframe,我想画一个有几条曲线的图。x轴不是数值,而是字符串 这很好(如中所示): require(ggplot2) df_ok您可以通过添加虚拟组来说服ggplot绘制线 ggplot(df_nok, aes(x,y)) + geom_line(aes(colour=d, group=d)) 另请参见您的问题是x变量是一个因素。因此,更改数据帧并将x设为双精度: df = rbind(data.frame(x=4:1,y=rnorm(4),d="d1"), data.frame

我想画一个有几条曲线的图。x轴不是数值,而是字符串

这很好(如中所示):

require(ggplot2)

df_ok您可以通过添加虚拟组来说服ggplot绘制线

ggplot(df_nok, aes(x,y)) + geom_line(aes(colour=d, group=d))

另请参见您的问题是
x
变量是一个因素。因此,更改数据帧并将
x
设为双精度:

df = rbind(data.frame(x=4:1,y=rnorm(4),d="d1"), 
           data.frame(x=3:1,y=rnorm(3),d="d2"))
正常绘图

g = ggplot(df, aes(x,y)) + geom_line(aes(colour=d))
但明确改变x轴比例:

g + scale_x_continuous(breaks=1:4, labels=c("one", "two", "three", "four")) 

要重命名变量,请尝试以下操作:

x1 = factor(df_nok$x, 
            levels=c("one", "two", "three", "four"), 
            labels=1:4)
df$x1 = as.numeric(x1)

添加
美学(我知道有点多余,但比重新调整轴标签简单得多)


df_nok这不能正常工作。它用彩色线段画一条线,但不是两条分开的线。它应该是
group=d
,而不是
group=1
。太棒了!现在只有顺序错了(“四”,“一”,“三”,“二”)。有什么快速的帮助吗?抱歉我读得太快了,很高兴你得到了一个更好的答案。PS:可以通过将
x
设置为一个因子来更改顺序,该因子的级别按您希望的顺序显示。@baptiste:但它与上面Brian Diggs评论的技巧(排序顺序除外)配合得很好!在上面编辑你的答案,并赢得一张赞成票!我希望不必重塑我的数据。但是,如果没有其他人有想法,我会接受这个答案。你知道当我得到
df_nok
x
的通缉令时,我如何轻松地将我的数据重塑为这种形式吗?如果可以的话,我会投你10票。必须始终记住
as.is=TRUE
!第二个问题是由于将
设置为.is=TRUE
后日期是字符引起的,但这很容易用
设置为.date()
解决。你不喜欢R和堆栈溢出吗?好极了迟一年总比不迟一年好,对吧?好吧,不管怎样,这将是像我这样的人谁跌跌撞撞到这一点在未来。
g + scale_x_continuous(breaks=1:4, labels=c("one", "two", "three", "four")) 
x1 = factor(df_nok$x, 
            levels=c("one", "two", "three", "four"), 
            labels=1:4)
df$x1 = as.numeric(x1)
df_nok <- rbind(data.frame(x=c("four","three","two","one"),y=rnorm(4),d="d1"),data.frame(x=c("three","two","one"),y=rnorm(3),d="d2"))

ggplot(df_nok, aes(x,y, group=d)) + geom_line(aes(colour=d))
df_nok$x <- factor(df_nok$x, 
            levels=c("one", "two", "three", "four"), 
            labels=1:4)