Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 显示相对于范围的当前值和历史值的图表_R_Ggplot2 - Fatal编程技术网

R 显示相对于范围的当前值和历史值的图表

R 显示相对于范围的当前值和历史值的图表,r,ggplot2,R,Ggplot2,我想使用ggplot在R中重新创建以下图表。我的数据是根据一个类似的表格,其中每个代码(a、B、C等)的数据。我有一个当前值,一个12米前的值,以及该期间的相应范围(最大值、最小值) 我的图表需要以红色显示当前值,以蓝色显示12米前的值,然后用一条线显示最大和最小范围 我可以在Excel中使用错误条来完成这项艰巨的工作,但我想在R中重现它。 关于如何使用ggplot实现这一点,有什么想法吗?谢谢 以下是我的想法,但请注意:如果您发布数据集,请不要发布图像,而是发布dput(your.data.

我想使用ggplot在R中重新创建以下图表。我的数据是根据一个类似的表格,其中每个代码(a、B、C等)的数据。我有一个当前值,一个12米前的值,以及该期间的相应范围(最大值、最小值)

我的图表需要以红色显示当前值,以蓝色显示12米前的值,然后用一条线显示最大和最小范围

我可以在Excel中使用错误条来完成这项艰巨的工作,但我想在R中重现它。 关于如何使用ggplot实现这一点,有什么想法吗?谢谢


以下是我的想法,但请注意:如果您发布数据集,请不要发布图像,而是发布dput(your.data.frame)的结果。。这样做的结果很容易复制粘贴到控制台中,以便复制您的数据集,而我手动重新创建了您的数据帧/

关于您的数据现状和预期图,首先有几点:

  • 用于表示12个月前和今天的红色和蓝色散列标记不是我头脑中知道的几何图形,因此我在这里使用
    geom_point
    来显示它们(最简单的方法)。您可以选择另一个几何图形,希望以不同的方式显示它们

  • 高和低的范围已经由这些列名指定。我将在
    geom\u errorbar
    中使用这些值来实现所需的美学效果

您可以按原样使用数据来绘制和使用两个单独的
geom_point
调用(一个用于“今天”和一个用于“12米以前”),但这将使创建图例变得比需要更困难,因此更好的选择是调整数据集以支持自动创建图例。为此,我们将使用
tidyr
中的
collect
功能,确保只“收集”了“今天”和“12个月前”中的信息(我的列名与此不同,您需要在数据框中以字母开头),但不要考虑“高”、“低”和字母(在我的数据框中称为“类别”)

其中,
df
是原始数据帧:

df1 <- df %>% gather(time, value, -category, -high, -low)
其中“time”有“M12.ago”或“today”

对于绘图,将类别应用于x,将值应用于y,并分别为
geom\u errorbar
指定ymax和ymin的高和低值:

ggplot(df1, aes(x=category, y=value)) +
    geom_errorbar(aes(ymin=low, ymax=high), width=0.2) + ylim(0,100) +
    geom_point(aes(color=time), size=2) +
    scale_color_manual(values=list('M12.ago'='blue', 'today'='red')) +
    theme_bw() + labs(color="") + theme(legend.position='bottom')
给你这个:

ggplot(df1, aes(x=category, y=value)) +
    geom_errorbar(aes(ymin=low, ymax=high), width=0.2) + ylim(0,100) +
    geom_point(aes(color=time), size=2) +
    scale_color_manual(values=list('M12.ago'='blue', 'today'='red')) +
    theme_bw() + labs(color="") + theme(legend.position='bottom')