R 在ggplot下创建绘图背后的逻辑

R 在ggplot下创建绘图背后的逻辑,r,ggplot2,R,Ggplot2,如果我可以问一个抽象的问题[由一个具体的例子支持],关于在R中使用ggplot构建复杂图表时的正确逻辑。例如,我需要创建如下图表: 我脑海中的逻辑步骤如下: 首先,我使用melt()函数将数据从宽格式转换为长格式。 其次,我创建了一个ggplot()脚本,将data=,aes(x=date,y=value,color=variable,shape=variable),size=,stat='identity'添加到geom_line()和geom_point() 第三,我添加了scale\u

如果我可以问一个抽象的问题[由一个具体的例子支持],关于在R中使用
ggplot
构建复杂图表时的正确逻辑。例如,我需要创建如下图表:

我脑海中的逻辑步骤如下: 首先,我使用melt()函数将数据从宽格式转换为长格式。
其次,我创建了一个ggplot()脚本,将
data=,aes(x=date,y=value,color=variable,shape=variable),size=,stat='identity'
添加到
geom_line()
geom_point()
第三,我添加了
scale\u shape\u manual
scale\u color\u manual
来定制我的图表和图例

虽然我很确定它会给我一个理想的图表,但我有很多疑问,传说会被描述成我需要的方式。特别是,为同一图表的点和线使用“比例\颜色\手册”会导致图例中出现重复记录:点和线

p8.2_rest <- ggplot() + 
    geom_point(data = p8_ch2_points_melt, aes(x=date, y=value, colour = variable, shape= variable), size = 1, stat = 'identity') + 
  geom_line (data = p8_ch2_line_melt, aes(x=date, y=value, colour = variable), size = 1, stat = 'identity') +

scale_shape_manual (
  guide = "legend", 
  name = NULL,
  breaks= c('eff_int', 'int'), 
  labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)'),
  values = c(15,20))+

 scale_colour_manual (
  guide = "legend", 
  name = NULL,
  breaks= c('eff_int', 'int', 'debt_serv'), 
  labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'),
  values = c('#4477AA', '#117733', '#332288'))
下面是我的一个脚本,它生成了我需要的图表以及图例的问题:

p8_ch2_points_melt包含点的数据, p8_ch2_线_熔体包含线的数据

p8.2_rest <- ggplot() + 
    geom_point(data = p8_ch2_points_melt, aes(x=date, y=value, colour = variable, shape= variable), size = 1, stat = 'identity') + 
  geom_line (data = p8_ch2_line_melt, aes(x=date, y=value, colour = variable), size = 1, stat = 'identity') +

scale_shape_manual (
  guide = "legend", 
  name = NULL,
  breaks= c('eff_int', 'int'), 
  labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)'),
  values = c(15,20))+

 scale_colour_manual (
  guide = "legend", 
  name = NULL,
  breaks= c('eff_int', 'int', 'debt_serv'), 
  labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'),
  values = c('#4477AA', '#117733', '#332288'))
所以,我有两个问题要问这个网站的专家: 1.创建此图表时我做错了什么? 2.为了形成在ggplot中创建图表的正确逻辑,您建议阅读哪些文献


多谢各位

尝试为比例提供相同的中断和标签,然后ggplot将合并它们(32是一个空白形状)


你想要的输出是什么?您想要一个用于颜色和形状的图例吗?是的,我需要一个常用的图例类型:一个用于线和点的图例类型,这样就不会出现双关键点和关键点标签。谢谢您的帮助。它改变了图表,尽管图例中的左键看起来像是在绘图上有三条线:两条带点,一条刚好是平的。理想情况下,我希望有两个图例键看起来像点,一个像线。我希望我的声音不要太模糊。
ggplot(p8_ch2_line_melt, aes(as.numeric(date), value, color = variable, shape = variable)) + 
  geom_line(size = 1) +
  geom_point(data = p8_ch2_points_melt, size = 1) +
  scale_shape_manual(
    breaks= c('eff_int', 'int', 'debt_serv'),
    name = NULL,
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'),
    values = c(32, 15, 14)) +
  scale_colour_manual (
    breaks= c('eff_int', 'int', 'debt_serv'), 
    name = NULL,
    labels= c('Эффективная ставка, % годовых (левая ось)', 'Стоимость суверенных займов, % годовых (левая ось)', 'Обслуживание долга, % от ВВП (левая ось)'),
    values = c('#4477AA', '#117733', '#332288'))