Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

r - continuous value supplied to discrete scale

I am new to ggplot2. In fact, I only discovered it last week and I haven't quite figured out yet how to use aesthetics and scales etc. There is probably a very easy solution to my problem but I couldn't find a satisfying answer online.

Sorry for the size of the message, but all the data used is in the following script:

dados
    Fres Vc  Lu
1    466 30  10
2    416 30  10
3    465 30  10
4    416 30  10
5    464 30  10
6    416 30  10
7    476 30  10
8    412 30  10
9    468 30  10
10   410 30  10
11   470 30  10
12   407 30  10
13   468 30  10
14   412 30  10
15   469 30  10
16   414 30  10
17   469 30  10
18   412 30  10
19   467 30  10
20   409 30  10
21   469 30  10
22   415 30  10
23   471 30  10
24   420 30  10
25   469 30  10
26   416 30  10
27   464 30  10
28   409 30  10
29   465 30  10
30   412 30  10
31   464 30  10
32   409 30  10
33   466 30  10
34   417 30  10
35   466 30  10
36   417 30  10
37   464 30  10
38   414 30  10
39   466 30  10
40   415 30  10
41   585 30  94
42   234 30  94
43   589 30  94
44   231 30  94
45   585 30  94
46   223 30  94
47   586 30  94
48   223 30  94
49   572 30  94
50   233 30  94
51   585 30  94
52   233 30  94
53   589 30  94
54   234 30  94
55   598 30  94
56   237 30  94
57   605 30  94
58   237 30  94
59   586 30  94
60   233 30  94
61   588 30  94
62   227 30  94
63   585 30  94
64   230 30  94
65   586 30  94
66   230 30  94
67   591 30  94
68   237 30  94
69   586 30  94
70   234 30  94
71   592 30  94
72   237 30  94
73   595 30  94
74   236 30  94
75   600 30  94
76   227 30  94
77   592 30  94
78   237 30  94
79   592 30  94
80   240 30  94
81   468 30  10
82   408 30  10
83   471 30  10
84   405 30  10
85   475 30  10
86   403 30  10
87   470 30  10
88   409 30  10
89   478 30  10
90   405 30  10
91   474 30  10
92   403 30  10
93   472 30  10
94   402 30  10
95   478 30  10
96   408 30  10
97   477 30  10
98   406 30  10
99   473 30  10
100  406 30  10
101  474 30  10
102  406 30  10
103  477 30  10
104  411 30  10
105  480 30  10
106  413 30  10
107  479 30  10
108  408 30  10
109  476 30  10
110  406 30  10
111  476 30  10
112  404 30  10
113  472 30  10
114  407 30  10
115  474 30  10
116  411 30  10
117  473 30  10
118  415 30  10
119  479 30  10
120  409 30  10
121  578 30  94
122  370 30  94
123  570 30  94
124  378 30  94
125  575 30  94
126  367 30  94
127  579 30  94
128  371 30  94
129  576 30  94
130  362 30  94
131  579 30  94
132  372 30  94
133  588 30  94
134  375 30  94
135  586 30  94
136  372 30  94
137  589 30  94
138  378 30  94
139  587 30  94
140  375 30  94
141  578 30  94
142  368 30  94
143  575 30  94
144  375 30  94
145  574 30  94
146  376 30  94
147  575 30  94
148  367 30  94
149  580 30  94
150  382 30  94
151  583 30  94
152  368 30  94
153  591 30  94
154  386 30  94
155  595 30  94
156  379 30  94
157  593 30  94
158  384 30  94
159  607 30  94
160  399 30  94
161  760 30 122
162  625 30 122
163  746 30 122
164  612 30 122
165  762 30 122
166  625 30 122
167  783 30 122
168  637 30 122
169  778 30 122
170  640 30 122
171  778 30 122
172  638 30 122
173  791 30 122
174  638 30 122
175  782 30 122
176  635 30 122
177  792 30 122
178  640 30 122
179  783 30 122
180  637 30 122
181  774 30 122
182  622 30 122
183  777 30 122
184  618 30 122
185  777 30 122
186  622 30 122
187  765 30 122
188  623 30 122
189  769 30 122
190  625 30 122
191  775 30 122
192  622 30 122
193  777 30 122
194  628 30 122
195  769 30 122
196  620 30 122
197  778 30 122
198  623 30 122
199  788 30 122
200  634 30 122
201  457 40  38
202  416 40  38
203  460 40  38
204  438 40  38
205  465 40  38
206  441 40  38
207  467 40  38
208  442 40  38
209  473 40  38
210  452 40  38
211  469 40  38
212  446 40  38
213  478 40  38
214  450 40  38
215  476 40  38
216  454 40  38
217  479 40  38
218  452 40  38
219  480 40  38
220  450 40  38
221  481 40  38
222  443 40  38
223  476 40  38
224  447 40  38
225  472 40  38
226  450 40  38
227  479 40  38
228  449 40  38
229  478 40  38
230  455 40  38
231  478 40  38
232  457 40  38
233  481 40  38
234  447 40  38
235  504 40  38
236  452 40  38
237  472 40  38
238  447 40  38
239  472 40  38
240  451 40  38
241  622 40  66
242  377 40  66
243  619 40  66
244  378 40  66
245  622 40  66
246  369 40  66
247  616 40  66
248  374 40  66
249  619 40  66
250  374 40  66
251  616 40  66
252  374 40  66
253  621 40  66
254  375 40  66
255  618 40  66
256  397 40  66
257  633 40  66
258  406 40  66
259  652 40  66
260  412 40  66
261  652 40  66
262  419 40  66
263  658 40  66
264  423 40  66
265  659 40  66
266  409 40  66
267  650 40  66
268  405 40  66
269  653 40  66
270  405 40  66
271  652 40  66
272  403 40  66
273  656 40  66
274  408 40  66
275  644 40  66
276  406 40  66
277  649 40  66
278  412 40  66
279  650 40  66
280  406 40  66
281  853 40 122
282  330 40 122
283  859 40 122
284  323 40 122
285  842 40 122
286  308 40 122
287  842 40 122
288  324 40 122
289  831 40 122
290  334 40 122
291  838 40 122
292  341 40 122
293  836 40 122
294  328 40 122
295  840 40 122
296  324 40 122
297  836 40 122
298  321 40 122
299  831 40 122
300  328 40 122
301  833 40 122
302  328 40 122
303  840 40 122
304  330 40 122
305  831 40 122
306  321 40 122
307  833 40 122
308  328 40 122
309  833 40 122
310  321 40 122
311  840 40 122
312  319 40 122
313  838 40 122
314  317 40 122
315  831 40 122
316  319 40 122
317  827 40 122
318  323 40 122
319  836 40 122
320  328 40 122
321  442 40  38
322  407 40  38
323  437 40  38
324  410 40  38
325  444 40  38
326  412 40  38
327  440 40  38
328  414 40  38
329  439 40  38
330  413 40  38
331  436 40  38
332  416 40  38
333  446 40  38
334  412 40  38
335  438 40  38
336  414 40  38
337  443 40  38
338  408 40  38
339  446 40  38
340  407 40  38
341  445 40  38
342  413 40  38
343  453 40  38
344  414 40  38
345  449 40  38
346  417 40  38
347  447 40  38
348  411 40  38
349  443 40  38
350  417 40  38
351  447 40  38
352  410 40  38
353  449 40  38
354  409 40  38
355  442 40  38
356  413 40  38
357  451 40  38
358  412 40  38
359  447 40  38
360  420 40  38
361  526 40  66
362  467 40  66
363  532 40  66
364  470 40  66
365  528 40  66
366  474 40  66
367  529 40  66
368  472 40  66
369  533 40  66
370  480 40  66
371  542 40  66
372  487 40  66
373  545 40  66
374  504 40  66
375  549 40  66
376  507 40  66
377  546 40  66
378  517 40  66
379  541 40  66
380  518 40  66
381  554 40  66
382  514 40  66
383  564 40  66
384  514 40  66
385  571 40  66
386  522 40  66
387  575 40  66
388  525 40  66
389  582 40  66
390  533 40  66
391  588 40  66
392  536 40  66
393  591 40  66
394  553 40  66
395  592 40  66
396  557 40  66
397  592 40  66
398  563 40  66
399  583 40  66
400  568 40  66
> dadosc <- summarySE(dados, measurevar="Fres", groupvars=c("Vc","Lu"))
> dadosc
  Vc  Lu  N     Fres        sd        se        ci
1 30  10 80 440.6875  30.91540  3.456447  6.879885
2 30  94 80 445.0250 150.97028 16.878990 33.596789
3 30 122 40 701.7000  75.06688 11.869115 24.007552
4 40  38 80 444.6125  23.31973  2.607225  5.189552
5 40  66 80 526.7125  90.77824 10.149316 20.201707
6 40 122 40 581.1250 259.74092 41.068645 83.069175

> ggplot(dadosc, aes(x=Lu, y=Fres, colour=Vc)) +
+ geom_errorbar(aes(ymin=Fres-se, ymax=Fres+se), width=5) +
+ geom_point()
> pd <- position_dodge(0.1)

Up to here I got this graph, very close to my desired graph, except for the fact I′d like a legend with only two colors, one for Vc=30 and other for Vc=40.

![enter image description here][1]

Then I try the following script:

ggplot(dadosc, aes(x=Lu, y=Fres, ymax = max(Fres), colour=Vc, group=Vc)) +
+ geom_errorbar(aes(ymin=Fres-se, ymax=Fres+se), colour="black", width=.1, position=pd) +
+ geom_point(position=pd, size=3, shape=21, fill="white") + # 21 is filled circle
+ xlab("Machining lenght (mm)") +
+ ylab("Machining forces (N)") +
+ scale_colour_hue(name="Cutting Velocity",    
+ breaks=c("30", "40"),
+ labels=c("Vc = 30 m/min", " Vc = 40 m/min "),
+ l=40) +                    
+ ggtitle("The Effect of Cutting Velocity on Machining Forces") +
+ expand_limits(y=0) +                       
+ scale_y_continuous(breaks=0:750*50) +        
+ theme_bw() +
+ theme(legend.justification=c(1,0),
+ legend.position=c(1,0))              
Error: Continuous value supplied to discrete scale

And I receive this message:

"Error: Continuous value supplied to discrete scale"!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Vc should be a factor if you want two values in the legend. You were getting that error because you were trying to scale Vc as discrete (breaks = c(30, 40)) when it was of type integer

ggplot(dadosc, aes(x=Lu, y=Fres, colour=factor(Vc))) +
   ...

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...