LRP (ish)

Jump to navigation Jump to search

Wow. I did not expect such quick fix. Thanks Skilgannon.

Now I would like to complain about this green color :) I personally think it is not very contrast on a white background.

I like our red and blue, but I think it would be better to replace currently light colored green with either much darker green or better yet something else, for example black.

I only speak for my own eyes, but I think our potentially color blinded participants will appreciate it as well.

Beaming (talk)23:14, 19 November 2013

Wow, sorry I missed these. The reason I use this green is because I just do a simple RGB 3-layer image, and set the different pixels manually. I would have to do a much more complex transform to get better colours. If you want to investigate my uber-messy code and provide a patch feel free =)

Skilgannon (talk)19:23, 18 November 2014

Hi Skilgannon,

I am not a plotting wizard but I plot enough in my life to make a fullish attempt to improve it a bit.

Though, it looks like the colors were chosen for the speed and not beauty, and it might be hard to have still fast yet beautiful output.

But I'll try to help. How can I look at the code?

Beaming (talk)03:12, 25 November 2014

Check here =)

Skilgannon (talk)10:48, 25 November 2014

Here is the suggested patch. Note that image array now created in uint8 RGB space, since resulting png image is in RGB space as well. As result it removes unnecessary image manipulation, after the array is prepared.

Beware, I was not able to fully test it since I am missing database and google modules. But it should work fine.

Note that colorAPSvsKNPBI is not used in this script but probably needed for another python script responsible for a given bot stats.

--- BotCompare.py	2014-09-15 15:40:19.000000000 -0400
+++ BotCompare.new.py	2014-11-26 22:28:50.000000000 -0500
@@ -266,28 +266,34 @@
                 
                 out.append("</td><td rowspan=\"7\">")
                 enemyScores = pickle.loads(zlib.decompress(rumble.ParticipantsScores))
+                # RGB color model
+                # Default colors
+                # colorSurvival = (0,255,0)
+                # colorAPS = (255,0,0)
+                # colorAPSvsKNPBI = (0,0,255)
+                # Colors suggested at 
+                # http://ksrowell.com/blog-visualizing-data/2012/02/02/optimal-colors-for-graphs/
+                colorSurvival = (62,150,81)
+                colorAPS = (204,37,41)
+                colorAPSvsKNPBI = (57,106,177)
                 size = 169
-                a = numpy.empty((size+1,size+1,4), dtype=numpy.float32)
+                a = numpy.empty((size+1,size+1,3), dtype=numpy.uint8)
                 a[...,(0,1,2)]=255
                 for cp in commonList:
                     eScore = enemyScores.get(cp.Name,None)
                     if eScore:
-                        a[max(0,min(size,size-int(round((cp.A_APS - cp.B_APS + 50)*0.01*size)))),
-                          int(round(eScore.APS*0.01*size)),(0)]=0
+                        x = int(round(eScore.APS*0.01*size))
+                        y = max(0,min(size,size-int(round((cp.A_APS - cp.B_APS + 50)*0.01*size))))
+                        a[x,y,(0,1,2)] = colorAPS
                         
-                        a[max(0,min(size,size-int(round((cp.A_Survival - cp.B_Survival + 50)*0.01*size)))),
-                          int(round(eScore.APS*0.01*size)),(1)]=0
+                        y = [max(0,min(size,size-int(round((cp.A_Survival - cp.B_Survival + 50)*0.01*size))))
+                        a[x,y,(0,1,2)] = colorSurvival
 #                        if eScore.ANPP > 0 and b.NPP >= 0:
  #                           a[size-int(round(b.NPP*0.01*size)),int(round(eScore.ANPP*0.01*size)),(0,1)]=0
                 
-                b = Image.fromarray(a.astype("uint8"), "CMYK")
-                c = cStringIO.StringIO()
-                b = b.convert("RGB")
-                a = numpy.array(b)
-                a[(a == (0,0,0)).all(axis=2)] = (255,255,255)
                 a[size - int(round(.5*size)),...] = 127
-                a
-                b = Image.fromarray(a,"RGB")
+                b = Image.fromarray(a.astype("uint8"),"RGB")
+                c = cStringIO.StringIO()
                 b.save(c,format="png")
                 d = c.getvalue()
                 c.close()

Beaming (talk)04:37, 27 November 2014
 

I'm very busy at the moment, but I'll take a look at this on the weekend.

Skilgannon (talk)08:03, 3 December 2014

No problem. I also made a pull request at the bitbucket to simplify import. This request is completely analogous to the presented here patch.

Beaming (talk)23:42, 3 December 2014

I've integrated your changes, with a few modifications of my own (just implementation details - averaging colours for multi-hit pixels). I also added it to the BotDetails page.

Skilgannon (talk)20:21, 5 December 2014

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Users.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page.

Return to Thread:Talk:LiteRumble/LRP (ish)/reply (21).