ggplot中的形状和线型 [英] Shapes and Linetypes in ggplot

查看:233
本文介绍了ggplot中的形状和线型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的df中:

 >单独
投资者比率子集团
1 1W 93.9426 audusd美元对
2 1M 97.6231 audusd美元对
3美元100.0376美元美元对
4 6M 108.7951美元美元对
5 12M 127.6704 audusd美元对
6 1W 93.6322 eurusd美元双倍
7 1M 93.5800欧元美元双倍
8 3M 96.2518欧元美元双倍
9 6M 101.1169欧元美元双倍
10 12M 108.7339 eurusd USD配对
11 1W 92.8932 gbpusd USD配对
12 1M 89.6215 gbpusd USD配对
13 3M 83.8495 gbpusd USD配对
14 6M 86.3159 gbpusd USD对
15 12M 86.9095 gbpusd USD配对
16 1W 94.4111 usdcad USD配对
17 1M 86.4612 usdcad美元配对
18美元88.4969 usdcad美元配对
19 6M 94.3754 usdcad USD对
20 12M 103.1338 usdcad USD配对
21 1W 97.9665 usdchf USD配对
22 1M 97.1005 usdchf USD配对
23 3M 93.1135 usdchf USD配对
24 6M 90.2106 usdchf美元对
25 12M 84.7482 usdchf美元对
26 1W 85.7557 usdjpy美元对
27 1M 89.6454 usdjpy美元对
28 3M 90.6929 usdjpy美元对
29 6M 90.7980 usdjpy USD配对
30 12M 95.8823 usdjpy USD配对
31 1W 92.2133 nzdusd美元配对
32 1M 95.3295美元美元配对
33美元99.8976美元配对
34 6M 107.4463 nzdusd USD配对
35 12M 124.3403 nzdusd USD配对
36 1W 88.2031 usddkk USD配对
37 1M 93.0318 usddkk美元配对
38美元91.5042美元配对
39 6M 99.4707 usddkk USD配对
40 12M 97.4030 usddkk USD配对
41 1W 95.8640 usdnok美元配对
42 1M美元88.9647美元美元配对
43美元93.5782美元美元配对
44 6M 99.4802美元对
45 12M 107.7916美元对
46 1W 91.5501美元对
47 1M 89.5148 usdsek美元对
48 3M 92.1016 usdsek USD对
49 6M 99.6835 usdsek USD配对
50 12M 112.8247 usdsek USD配对
51 1W 43.6337 usdhkd USD配对
52 1M 61.4948 usdhkd美元配对
53 3M 62.5292 usdhkd美元对
54 6M 54.5213 usdhkd美元对
55 12M 41.1970 usdhkd美元对
56 1W 93.7892 usdzar美元对
57 1M 92.0233 usdzar美元对
58 3M 94.2433 usdzar美元对
59 6M 105.9208 usdzar美元对
60 12M 108.5231 usdzar欧元对
61 1W 95.9848 euraud欧元对
62 1M 96.6497 euraud欧元对
63 3M 99.2588 euraud欧元对
64 6M 103.1839 euraud欧元对
65 12M 111.2710 euraud欧元对
66 1W 90.3670 eurchf欧元对
67 1M 92.9810 eurchf欧元对
68 3M 86.7696 eurchf欧元对
69 6M 92.4201 eurchf欧元对
70 12M 107.0379 eurchf欧元对
71 1W 92.5969欧元欧元对
72 1M 86.2361 eurgbp欧元对s
73 3M 81.5729 eurgbp欧元对
74 6M 82.2716欧元欧元对
75 12M 90.0153欧元对欧元对
76 1W 92.9831欧元对欧元对
77 1M 91.2058 eurjpy EUR对
78 3M 90.1872 eurjpy欧元对
79 6M 90.9569欧元对欧元对
80 12M 98.0120欧元对欧元对
81 1W 87.7428 eurnok欧元对
82 1M 84.9459 eurnok欧元对
83 3M 86.7989 eurnok欧元对
84 6M 87.0153 eurnok欧元对
85 12M 98.4807 eurnok欧元对
86 1W 97.1092 eurtry欧元对
87 1M 93.0774 eurtry EUR对
88 3M 96.7237 eurtry欧元对
89 6M 91.3461 eurtry欧元对
90 12M 75.9171 eurtry欧元对

..以下图表:

  ggplot(aperate,aes(x = Tenors ,y = Ratio,color = Pairs,group = Tenors))+ 
geom_line(data = seperate,aes(x = Tenors,y = Ratio,group = Pairs,linetype = Pairs))+
geom_point(data = seperate,aes(x = Tenors,y = Ratio,group = Pairs,shape = Pairs))+
facet_grid(Subgroup〜。)+
xlab(Tenor)+
ylab(Average)+
ylim(c(20,150))

..现在我到了这里,但我想分配每个18货币对与自己的线型和形状,但我得到这个:



好像只有12种线型和甚至更少的形状是真的吗?

解决方案

如此大量的线型和形状可能会让人困惑,如何访问更多的线型和点标记:



线型可以由2,4,6或8个十六进制数字序列指定(1到9,然后从A到F代表10到15(0在线型代码中是不允许的))。这些模式是短划线的长度,然后是长度的差距。因此,24将是长度为2的短划线,接着是长度为4的缺口。42C6将是短划线4,短划线12,短缺12,等等。下面我创建了24种不同的线型图案作为插图,但您可以根据需要定制您的图案。

  linetypes = c(apply (expand.grid(c(2,4),c(1,2,4,8,A)),1,paste,collapse =),
apply(expand.grid(c( 2,4,8),c(2,4),c(5,F),2),1,paste,collapse =),
4284B4F4,228F61A4)

R有26个内置符号(参见?pch ),其中24个用于下图。您可以使用Unicode访问其他符号,如



这些线型和点标记不是特定于ggplot2的,可以在基本图形和网格中访问也是如此。


In the following df:

> seperate
   Tenors    Ratio  Pairs  Subgroup
1      1W  93.9426 audusd USD Pairs
2      1M  97.6231 audusd USD Pairs
3      3M 100.0376 audusd USD Pairs
4      6M 108.7951 audusd USD Pairs
5     12M 127.6704 audusd USD Pairs
6      1W  93.6322 eurusd USD Pairs
7      1M  93.5800 eurusd USD Pairs
8      3M  96.2518 eurusd USD Pairs
9      6M 101.1169 eurusd USD Pairs
10    12M 108.7339 eurusd USD Pairs
11     1W  92.8932 gbpusd USD Pairs
12     1M  89.6215 gbpusd USD Pairs
13     3M  83.8495 gbpusd USD Pairs
14     6M  86.3159 gbpusd USD Pairs
15    12M  86.9095 gbpusd USD Pairs
16     1W  94.4111 usdcad USD Pairs
17     1M  86.4612 usdcad USD Pairs
18     3M  88.4969 usdcad USD Pairs
19     6M  94.3754 usdcad USD Pairs
20    12M 103.1338 usdcad USD Pairs
21     1W  97.9665 usdchf USD Pairs
22     1M  97.1005 usdchf USD Pairs
23     3M  93.1135 usdchf USD Pairs
24     6M  90.2106 usdchf USD Pairs
25    12M  84.7482 usdchf USD Pairs
26     1W  85.7557 usdjpy USD Pairs
27     1M  89.6454 usdjpy USD Pairs
28     3M  90.6929 usdjpy USD Pairs
29     6M  90.7980 usdjpy USD Pairs
30    12M  95.8823 usdjpy USD Pairs
31     1W  92.2133 nzdusd USD Pairs
32     1M  95.3295 nzdusd USD Pairs
33     3M  99.8976 nzdusd USD Pairs
34     6M 107.4463 nzdusd USD Pairs
35    12M 124.3403 nzdusd USD Pairs
36     1W  88.2031 usddkk USD Pairs
37     1M  93.0318 usddkk USD Pairs
38     3M  91.5042 usddkk USD Pairs
39     6M  99.4707 usddkk USD Pairs
40    12M  97.4030 usddkk USD Pairs
41     1W  95.8640 usdnok USD Pairs
42     1M  88.9647 usdnok USD Pairs
43     3M  93.5782 usdnok USD Pairs
44     6M  99.4802 usdnok USD Pairs
45    12M 107.7916 usdnok USD Pairs
46     1W  91.5501 usdsek USD Pairs
47     1M  89.5148 usdsek USD Pairs
48     3M  92.1016 usdsek USD Pairs
49     6M  99.6835 usdsek USD Pairs
50    12M 112.8247 usdsek USD Pairs
51     1W  43.6337 usdhkd USD Pairs
52     1M  61.4948 usdhkd USD Pairs
53     3M  62.5292 usdhkd USD Pairs
54     6M  54.5213 usdhkd USD Pairs
55    12M  41.1970 usdhkd USD Pairs
56     1W  93.7892 usdzar USD Pairs
57     1M  92.0233 usdzar USD Pairs
58     3M  94.2433 usdzar USD Pairs
59     6M 105.9208 usdzar USD Pairs
60    12M 108.5231 usdzar EUR Pairs
61     1W  95.9848 euraud EUR Pairs
62     1M  96.6497 euraud EUR Pairs
63     3M  99.2588 euraud EUR Pairs
64     6M 103.1839 euraud EUR Pairs
65    12M 111.2710 euraud EUR Pairs
66     1W  90.3670 eurchf EUR Pairs
67     1M  92.9810 eurchf EUR Pairs
68     3M  86.7696 eurchf EUR Pairs
69     6M  92.4201 eurchf EUR Pairs
70    12M 107.0379 eurchf EUR Pairs
71     1W  92.5969 eurgbp EUR Pairs
72     1M  86.2361 eurgbp EUR Pairs
73     3M  81.5729 eurgbp EUR Pairs
74     6M  82.2716 eurgbp EUR Pairs
75    12M  90.0153 eurgbp EUR Pairs
76     1W  92.9831 eurjpy EUR Pairs
77     1M  91.2058 eurjpy EUR Pairs
78     3M  90.1872 eurjpy EUR Pairs
79     6M  90.9569 eurjpy EUR Pairs
80    12M  98.0120 eurjpy EUR Pairs
81     1W  87.7428 eurnok EUR Pairs
82     1M  84.9459 eurnok EUR Pairs
83     3M  86.7989 eurnok EUR Pairs
84     6M  87.0153 eurnok EUR Pairs
85    12M  98.4807 eurnok EUR Pairs
86     1W  97.1092 eurtry EUR Pairs
87     1M  93.0774 eurtry EUR Pairs
88     3M  96.7237 eurtry EUR Pairs
89     6M  91.3461 eurtry EUR Pairs
90    12M  75.9171 eurtry EUR Pairs

.. with the following plot:

ggplot(seperate, aes(x=Tenors,y =Ratio, colour=Pairs, group=Tenors)) +       
  geom_line(    data=seperate,aes(x=Tenors,y=Ratio,group=Pairs,linetype=Pairs))+
  geom_point(data=seperate,aes(x=Tenors,y=Ratio,group=Pairs,shape=Pairs))+
  facet_grid(Subgroup~.)+
  xlab("Tenor")+
  ylab("Average")+
  ylim(c(20,150))

... Now I am this far, but I would like to assign each 18 currency pair with its own linetype and shape, but I get this:

It seems as if there is only 12 linetypes and even fewer shapes is that true?

解决方案

Such a large number of linetypes and shapes will probably be confusing to look at, but here's how to access more linetypes and point markers:

Linetypes can be specified by sequences of 2, 4, 6, or 8 hexadecimal digits (1 through 9 and then A through F to represent 10 through 15 (0 is not allowed in linetype codes)). The pattern for these is length of dash then length of gap. So "24" would be a dash of length 2 followed by a gap of length 4. "42C6" would be dash 4 gap 2 dash 12 gap 6, and so on. Below I create 24 different linetype patterns for illustration, but you can of course tailor your patterns as needed.

linetypes = c(apply(expand.grid(c(2,4), c(1,2,4,8,"A")), 1, paste, collapse=""), 
              apply(expand.grid(c(2,4,8), c(2,4), c(5,"F"), 2), 1, paste, collapse=""),
              "4284B4F4", "228F61A4")

R has 26 built-in symbols (see ?pch), 24 of which are used in the plot below. You can access additional symbols using Unicode, as shown in this SO answer.

Here's some fake data to plot. We'll use linetypes as the grouping variable so that the legend will display the linetype code for each of the linetypes.

dat = data.frame(x=rep(1:2, 24), y=rep(1:24, each=2), 
                 group=factor(rep(linetypes, each=2), levels=linetypes))

ggplot(dat, aes(x,y, group=group, linetype=group, shape=group)) + 
  geom_line() +
  geom_point(size=3, colour="blue", fill="red") +
  scale_shape_manual(values=c(0:23)) +
  scale_linetype_manual(values=linetypes) +
  guides(shape=guide_legend(reverse=TRUE),
         linetype=guide_legend(reverse=TRUE)) +
  labs(shape="", linetype="")

These linetypes and point markers are not specific to ggplot2 and can be accessed in base graphics and lattice as well.

这篇关于ggplot中的形状和线型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆