[R] Differentiate values in a plot by colour or symbol

Tobias Christoph s3tochri at uni-bayreuth.de
Wed May 31 09:56:51 CEST 2017


wuhu, the plot is running now;)

I had to put three brackets instead of two at the end of the formula.

Thank you!




Am 30.05.2017 um 21:29 schrieb Ismail SEZEN:
>
>> On 30 May 2017, at 21:44, Tobias Christoph <s3tochri at uni-bayreuth.de 
>> <mailto:s3tochri at uni-bayreuth.de>> wrote:
>>
>> Okay;)
>>
>> First of all many thanks to you, Ismail, that you really try to help 
>> me. I am really not an expert with R and try to learn.
>>
> You’re welcome.
>
>> I just checked: All columns in my data frame are numeric. The range 
>> of years is from 2005 to 2016.
>>
>> Please find attached the result of "data.frame(data)". I also 
>> attached it as Excel-file
>>
>> >data.frame(data)            town year  revenue stations
>> 1       Bremen 2005 39.91036        1
>> 2       Bremen 2006 43.34265        1
>> 3       Bremen 2007 44.03614        1
>> 4       Bremen 2008 43.19945        1
>> 5       Bremen 2009 39.05230        1
>> 6       Bremen 2010 44.24626        1
>> 7       Bremen 2011 46.19309       35
>> 8       Bremen 2012 48.59513      101
>> 9       Bremen 2013 48.15778      181
>> 10      Bremen 2014 48.83199      323
>> 11      Bremen 2015 48.68549      463
>> 12      Bremen 2016 50.00000      614
>> 13     Dresden 2005 42.27858        1
>> 14     Dresden 2006 50.39606        1
>> 15     Dresden 2007 48.73299        1
>> 16     Dresden 2008 42.69010        1
>> 17     Dresden 2009 40.81174        1
>> 18     Dresden 2010 47.09675        2
>> 19     Dresden 2011 49.16900       43
>> 20     Dresden 2012 48.13645      151
>> 21     Dresden 2013 48.13645      284
>> 22     Dresden 2014 49.77309      511
>> 23     Dresden 2015 51.51515      773
>> 24     Dresden 2016 51.00000     1057
>> 25  Düsseldorf 2005 44.23227        1
>> 26  Düsseldorf 2006 46.70928        1
>> 27  Düsseldorf 2007 51.24008        1
>> 28  Düsseldorf 2008 61.59058        1
>> 29  Düsseldorf 2009 45.70021        1
>> 30  Düsseldorf 2010 57.17096        8
>> 31  Düsseldorf 2011 60.60122      115
>> 32  Düsseldorf 2012 65.50992      339
>> 33  Düsseldorf 2013 64.06870      636
>> 34  Düsseldorf 2014 71.56474     1117
>> 35  Düsseldorf 2015 68.20119     1622
>> 36  Düsseldorf 2016 80.00000     2117
>> 37       Essen 2005 37.71029        1
>> 38       Essen 2006 44.61127        1
>> 39       Essen 2007 41.39926        1
>> 40       Essen 2008 49.34792        1
>> 41       Essen 2009 38.49137        1
>> 42       Essen 2010 51.57844        1
>> 43       Essen 2011 48.38058       29
>> 44       Essen 2012 50.17066       42
>> 45       Essen 2013 49.26759       90
>> 46       Essen 2014 50.20367      162
>> 47       Essen 2015 47.89430      258
>> 48       Essen 2016 58.00000      370
>> 49   Frankfurt 2005 47.97355        1
>> 50   Frankfurt 2006 50.37223        1
>> 51   Frankfurt 2007 49.11292        1
>> 52   Frankfurt 2008 49.65316        1
>> 53   Frankfurt 2009 44.53889        3
>> 54   Frankfurt 2010 54.02567       15
>> 55   Frankfurt 2011 56.29475       80
>> 56   Frankfurt 2012 59.10949      223
>> 57   Frankfurt 2013 62.30140      488
>> 58   Frankfurt 2014 62.67521      836
>> 59   Frankfurt 2015 66.93712     1319
>> 60   Frankfurt 2016 66.00000     1744
>> 61    Hannover 2005 39.82472        1
>> 62    Hannover 2006 41.25841        1
>> 63    Hannover 2007 40.80456        1
>> 64    Hannover 2008 42.19192        1
>> 65    Hannover 2009 36.96012        1
>> 66    Hannover 2010 45.83055        5
>> 67    Hannover 2011 49.86364       35
>> 68    Hannover 2012 51.11023      167
>> 69    Hannover 2013 52.69465      351
>> 70    Hannover 2014 56.22519      983
>> 71    Hannover 2015 56.95612     1413
>> 72    Hannover 2016 61.00000     1864
>> 73     Leipzig 2005 29.05982        1
>> 74     Leipzig 2006 34.52306        1
>> 75     Leipzig 2007 35.97303        1
>> 76     Leipzig 2008 40.03798        1
>> 77     Leipzig 2009 37.67574        2
>> 78     Leipzig 2010 44.19365        3
>> 79     Leipzig 2011 44.72397       53
>> 80     Leipzig 2012 49.55416      223
>> 81     Leipzig 2013 52.92384      488
>> 82     Leipzig 2014 53.50600      918
>> 83     Leipzig 2015 54.62963     1517
>> 84     Leipzig 2016 59.00000     2037
>> 85    Nürnberg 2005 43.51885        1
>> 86    Nürnberg 2006 49.13278        1
>> 87    Nürnberg 2007 46.92181        1
>> 88    Nürnberg 2008 52.03628        1
>> 89    Nürnberg 2009 43.45030        1
>> 90    Nürnberg 2010 55.44258        5
>> 91    Nürnberg 2011 57.21674       48
>> 92    Nürnberg 2012 62.36625      145
>> 93    Nürnberg 2013 61.49312      297
>> 94    Nürnberg 2014 66.22809      505
>> 95    Nürnberg 2015 63.38028      813
>> 96    Nürnberg 2016 72.00000     1101
>> 97     Rostock 2005 32.56640        1
>> 98     Rostock 2006 30.71011        1
>> 99     Rostock 2007 33.71970        1
>> 100    Rostock 2008 34.25922        1
>> 101    Rostock 2009 34.60181        1
>> 102    Rostock 2010 40.17270        1
>> 103    Rostock 2011 42.06082        3
>> 104    Rostock 2012 42.43937       15
>> 105    Rostock 2013 43.67011       43
>> 106    Rostock 2014 43.93213       93
>> 107    Rostock 2015 47.35883      174
>> 108    Rostock 2016 52.00000      243
>> 109  Stuttgart 2005 50.72972        1
>> 110  Stuttgart 2006 58.74502        1
>> 111  Stuttgart 2007 53.45797        1
>> 112  Stuttgart 2008 56.18432        1
>> 113  Stuttgart 2009 46.29588        1
>> 114  Stuttgart 2010 56.38839        2
>> 115  Stuttgart 2011 58.92586       33
>> 116  Stuttgart 2012 61.16505       96
>> 117  Stuttgart 2013 60.12524      200
>> 118  Stuttgart 2014 65.89726      409
>> 119  Stuttgart 2015 71.49853      661
>> 120  Stuttgart 2016 73.00000      853
>> 121   Wiebaden 2005 37.40724        1
>> 122   Wiebaden 2006 38.94093        1
>> 123   Wiebaden 2007 38.08423        1
>> 124   Wiebaden 2008 38.23657        1
>> 125   Wiebaden 2009 34.98646        1
>> 126   Wiebaden 2010 40.72424        2
>> 127   Wiebaden 2011 44.59304        8
>> 128   Wiebaden 2012 47.58078       27
>> 129   Wiebaden 2013 46.86706       59
>> 130   Wiebaden 2014 46.58586      110
>> 131   Wiebaden 2015 48.12320      163
>> 132   Wiebaden 2016 50.00000      220
>>
>>
>
>
> Insead of copy and paste data.frame or attach an excel file, learn how 
> to create a minimal example as below:
>
> set.seed(6)
> data <- data.frame(
>   town = rep(LETTERS, each = 5, times = 5)[1:60],
>   year = rep(2005:2016, times = 5),
>   revenue = rnorm(60, 35),
>   stations = round(rnorm(60, 250, 100)))
>
> plot(data$stations, data$revenue, xlab="stations", ylab="revenue", pch 
> = 16, col = findInterval(data$year, c(2005, 2010, 2016)))
>
> I created a fake data.frame similar your original one and used it to 
> plot. See the result of plot. It works as intended.
>
> let’s check result of findInterval function.
>
> findInterval(data$year, c(2005, 2010, 2016))
> [1] 1 1 1 1 1 2 2 2 2 2 2 3 1 1 1 1 1 2 2 2 2 2 2 3 1 1 1 1 1 2 2 2 2 
> 2 2 3 1 1 1 1 1 2 2 2 2 2 2 3 1 1 1 1 1 2 2 2 2 2 2 3
>
> and see the result of palette function.
>
> palette()
> "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
>  "gray"
>
> as you noticed, black dots in the plot will be belong to years between 
> 2005-2009, red dots will be belong to 2010-2015 and green dots will be 
> belong to only 2016.
>
> I hope your next questions follow this guide and make things easier 
> for you and us :)
>
>
>>
>>
>> Am 30.05.2017 um 20:30 schrieb Ismail SEZEN:
>>>
>>>> On 30 May 2017, at 21:23, Tobias Christoph 
>>>> <s3tochri at uni-bayreuth.de <mailto:s3tochri at uni-bayreuth.de>> wrote:
>>>>
>>>> Ahh, okay.
>>>>
>>>> I think now I understand what you exactly mean. But the plot is 
>>>> stil not working /differentiate the dots by color. I used the 
>>>> following formula.
>>>>
>>>> "plot(data$stations, data$revenue, xlab="stations", ylab="revenue", 
>>>> col = findInterval(data$year, c(2005, 2010, 2015))"
>>>>
>>>> I think the problem is stil related to the term "col = 
>>>> findInterval(data$year, c(2005, 2010, 2015))" and its notation.
>>>>
>>>> Just to make sure: "data" is the name of the data-table imported in 
>>>> R. "year" is the lable of the column where the years are listed in 
>>>> the data-table?
>>>>
>>> Exactly. Make sure all the columns in data.frame are numeric. Also I 
>>> don’t know the range of years. You should arrange arguments to 
>>> findInterval according your data. If you would send a minimal 
>>> example as stated in posting guide [1], you will have your answer in 
>>> second email :).
>>>
>>> 1- http://www.R-project.org/posting-guide.html 
>>> <http://www.r-project.org/posting-guide.html>
>>>
>>>> Cheers
>>>>
>>>>
>>>>
>>>> Am 30.05.2017 um 19:57 schrieb Ismail SEZEN:
>>>>>
>>>>>> On 30 May 2017, at 20:48, Tobias Christoph 
>>>>>> <s3tochri at uni-bayreuth.de <mailto:s3tochri at uni-bayreuth.de>> wrote:
>>>>>>
>>>>>> Hi Ismael,
>>>>>>
>>>>>> thanks for your quick reply.
>>>>>>
>>>>>> I was now able to esmitate two intervals with the 
>>>>>> "findInterval"-Function.
>>>>>>
>>>>>>    x
>>>>>>   [1,] 2005 1
>>>>>>   [2,] 2006 1
>>>>>>   [3,] 2007 1
>>>>>>   [4,] 2008 1
>>>>>>   [5,] 2009 1
>>>>>>   [6,] 2010 1
>>>>>>   [7,] 2011 2
>>>>>>   [8,] 2012 2
>>>>>>   [9,] 2013 2
>>>>>> [10,] 2014 2
>>>>>> [11,] 2015 2
>>>>>> [12,] 2016 2
>>>>>>
>>>>>> But I was not able to connect the intervals with the 
>>>>>> plot-function. I used the following formular.
>>>>>>
>>>>>> "plot(data$stations, data$revenue, xlab="stations", 
>>>>>> ylab="revenue", col(findInterval())"
>>>>>>
>>>>> In fact I should say “feed _col_ or _pch_ argument with the result 
>>>>> of findInterval” as below:
>>>>>
>>>>> plot(data$stations, data$revenue, xlab="stations", ylab="revenue", 
>>>>> col = findInterval(x$year, c(2005, 2010, 2015))
>>>>>
>>>>> Please note that If you have many (20-30) intervals, colour 
>>>>> handling will be more complex. But I assume you have maximum 5-10 
>>>>> intervals. So, the piece of code above will work for you.
>>>>>
>>>>>> How can I proceed and get the plot-funktion running?
>>>>>>
>>>>>> Maybe it is not running because the years as single numbers are 
>>>>>> already contained in my data-frame?
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Toby
>>>>>>
>>>>>>
>>>>>>
>>>>>> Am 30.05.2017 um 18:26 schrieb Ismail SEZEN:
>>>>>>>> On 30 May 2017, at 19:02, Tobias Christoph<s3tochri at uni-bayreuth.de>  wrote:
>>>>>>>>
>>>>>>>> Hey Guys,
>>>>>>>>
>>>>>>>> I just try to differentiate certain values in my plot by colour or symbol.
>>>>>>>>
>>>>>>>> I have panel data with three dimensions (number of stations, revenue,
>>>>>>>> years). To integrate the third dimension (years) in the plot, I want to
>>>>>>>> differentiate the values(number of stations, revenue) by a certain range
>>>>>>>> of years.
>>>>>>>>
>>>>>>>> e.g.: 2005-2010: red coloured dots, 2011-2016, blue coloured dots
>>>>>>>>
>>>>>>>> For the normal plot I used the following formula:
>>>>>>>>
>>>>>>>> *plot(data$stations, data$revenue, xlab="stations", ylab="revenue")*
>>>>>>>>
>>>>>>>> I only found a way to mark every single year. So hopefully you can help?
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>>
>>>>>>>> Toby
>>>>>>>>
>>>>>>> See ?findInterval. Especially, first 3 lines in _Examples_ section. Use result of findInterval as argument to _col_ or _pch_ in plot function.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>> <data.xlsx>
>


	[[alternative HTML version deleted]]



More information about the R-help mailing list