lby060988 2022-08-13 12:41 采纳率: 33.3%
浏览 140
已结题

R语言绘制河流图报错处理

我想用R语言绘制河流图

element_text设置字体 scale_x_continuous更换横轴标签 labs(fill="") 无标签图例

p<-ggplot(dataframe,aes(x = CPP_phase,y = genus,fill=Name)) + theme_bw() +
theme(panel.grid.major=element_line(colour=NA),
panel.background = element_rect(fill = "transparent",colour = NA),
plot.background = element_rect(fill = "transparent",colour = NA),
panel.grid.minor = element_blank(),
text=element_text(family="A",size = 9))+
scale_x_continuous(breaks =dataframe$CPP_phase,labels=rep(c('pre','acq','ext','rein'),times=10))+labs(fill="")
p

这是我的代码
以下是报错内容

scale_x_continuous(breaks =dataframe$CPP_phase,labels=rep(c('pre','acq','ext','rein'),times=10))+labs(fill="")
Error in +.gg:
! Cannot add ggproto objects together. Did you forget to add this object to a ggplot object?
Run rlang::last_error() to see where the error occurred.
rlang::last_error()
Error in $<-.data.frame(*tmp*, "call_text", value = c("\033[38;5;232m\033[1\m033[94mggplot2:::+.gg(\033[38;5;232\033[22\033[39mscale_x_continuous(breaks = dataframe$CPP_phase, labels = rep(c("pre", "acq", "ext"\033[38;5;232033[1033[94)033[38;5;232033[22\033[39", :
替换数据里有2行,但数据有1

我试了很多次,不知道问题出在了哪里。

  • 写回答

3条回答 默认 最新

  • Nh_code 2022-08-15 13:17
    关注

    我了解了下你的这个代码,看需求应该是替换掉原本的x轴标签,你用的这个“scale_x_continuous”方法报错提示应替换标签数目与绘制的x轴标签刻度数不匹配的。

    对于标签替换,我提供下我的处理思路:

    img


    这是我用于绘图的数据data.plot,数据表有4列,以下是这四列的属性:

    > str(data.plot)
    'data.frame':    38 obs. of  4 variables:
     $ phaselabel : Factor w/ 43 levels "phase_1977","phase_1978",..: 1 1 1 1 2 2 2 2 3 3 ...
     $ time_series: int  1 1 1 1 2 2 2 2 3 3 ...
     $ sample     : chr  "Action" "Adventure" "Comedy" "Drama" ...
     $ value      : num  2.984 0.209 0.516 2.54 1.915 ...
    

    其中,第一列phaselabel 是用于更改的x轴标签,属性为字符串;第二列time_series是用于绘制geom_stream()x轴提供的时间序列,是一个数值型序列;第三列sample 是样本;第四列是每个时间点上每个样本的值,属性为数值型序列。
    这是绘图函数:

    ggplot(data.plot,aes(x = time_series,y = value,fill=sample)) + geom_stream() +
        scale_x_continuous(breaks = seq(1,max(data.plot$time_series)),labels = unique(data.plot$phaselabel))  #调整x轴的刻度标签,按一个单位分隔开来,每个单位的刻度替换为unique(data.plot$phaselabel)中的标签
    

    出图结果

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 已采纳回答 8月19日
  • 创建了问题 8月13日

悬赏问题

  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办
  • ¥15 数电设计题 没有设计思路 不知道用什么芯片进行设计 求提供设计思路
  • ¥60 设计一种优化算法结合案例给出智能仓储四向穿梭车的调度计划
  • ¥15 Errno2:No such file or directory,在当前文件确实没有该图片,怎么解决?
  • ¥15 博世摄像头数据存储的问题(iscsi)
  • ¥15 如何实现对学生籍贯信息管理系统的选择排序