GSoC 2019 Project [ Rubyplot ] discussion

Thanks! I will be leaving for the Intel summit on 13th (and will be unavailable till 16th), I haven’t got the appointment date for my visa yet as I have not applied for it due to some delayed paperwork (I will let you know the dates as soon as I get it)

The PR is mergeable you can review it and merge it (the only temporary change is set_background_gradient function which I will look into later)

I tested it right now and it is not because of the opacity, infact setting the opacity to 1 increases the delata to around 16k


Happens in Magick for sure, will test in GR


I will make this change in the frontend

Yes, the 5% distance will correct this bug

[RUBYPLOT-GSOC][DAILY][10 June] The Blogs

Planned progress
Checking bar plot


  • Optimized draw_rectangle function
  • Passed the test for bar plot
  • added default X-axis title and Y-axis title
  • Improved the blogs


  • The legend box is missing in the bar plot
  • The blog is very big and will take one more day to complete


  • Complete the remaining work
  • Complete the blogs
  • Check bubble plot

[RUBYPLOT-GSOC][DAILY][11 June] The Blog

Planned progress
Check bubble plot



  • I have already explained all the functions which I implemented in The scatter plot example blog, I will make a separate blog and explain the functions again so that my progress is shown.
  • Various test in the bar plot, area plot and bubble plot fail because of the delta being too much but the plots look fine. The deltas are highly dependent on the colour used in the plots and some tests pass for light colours like yellow or white but fail for dark colours like green or black. @v0dro any idea why this might be happening? and any suggestions to improve this?
  • Should bubbles in bubble plot have a little less opacity so that if bubbles overlap, the visibility is more?
  • If no label is given to the plot then the GR backend draws incorrect text (It should draw nothing). Maybe this will fix if the condition of the empty string given is solved as discussed previously.


  • Checking the candle-stick plot
  • Writing the next blog
  • Completing the remaining work

[RUBYPLOT-GSOC][DAILY][12 June] Resuming plots

Planned progress
Check candle stick plot


  • Added draw_lines function (which currently uses ployline and is not using draw_line function)
  • Passed the tests for candle-stick plot
  • Currently the plots for the simple candle stick test for both backends:




  • I will write the next blog specifically for my contributions by next week
  • draw_lines function will be changed so that it is dependent on draw_line as ployline function will create problems if used for more than 2 points

Checking histogram (from 17th July)

I have been invited to an Intel summit held at Bangalore as I am an Intel student ambassador. I will be attending the summit from 13th-16th June and will resume the work from 17th June.
Sorry for the unavailability.

I like the details in your blog post. However in its current form its quite difficult to read because you’re diving directly into very deep technical details.

Can you add an ‘introduction’ paragraph that will serve as an overall introduction to the entire blog post? You can a table contents too and refer to that in your introduction. Something on the lines of ‘I have written so and so features and you can find this detail here and that detail there’. Like the introductory chapter of a reference book.

Can’t really say. Maybe we can try reading the images using some library that is not Magick?


That’s a bug and should be fixed.

@AlishDipani how’s your progress regarding the X and Y ticks?

Here’s some more feedback regarding the blog post:

As an example, in the Setting Output Device part of the post, you’ve a detailed explanation of the function of each within the method init_output_device. But what is missing here is the ‘purpose’ of each line. I can see that you’re creating three Magick::Draw objects. But WHY create three objects? What were the underlying design decisions that lead to creation of three objects instead of just one? These things are much more interesting to someone reading your post to get a technical overview. They also serve as guidelines later when a developer is wondering about the purpose of the code.

Another example is that we do not use the MATLAB notation for creating subplots (which is used by matplotlib). Would be great if you can write the reasons for that too.

Also explain why you do the text rotation in Magick the way you do.
Please make such updates to your post before moving on to the next one.

Yes, I’ll look into it.

Is opacity 0.7 fine?
Also, to do this we will have to use the draw_circle function instead of draw_markers as it does not support opacity.

I was unavailable and could not work on this, I will look into this soon

I will make these changes soon (surely by Saturday)

[RUBYPLOT-GSOC][DAILY][17 June] Back to work

Planned progress
Checking Histogram


  • Passed the tests for histogram
  • Shifted set_background_gradient to backend
  • Added exception to markers which are not yet implemented


  • I tested subplots (all scatter plots) for Magick and GR backends and found a bug in Magick subplots, the Rubyplot coordinates are not flipped in within_window. Example

4x6 and 6x4 plots in GR-

4x6 and 6x4 plots in Magick-

I will look into this soon.


  • Check Line plot
  • Improve blog
  • Complete remaining work and solve remaining bugs

[RUBYPLOT-GSOC][DAILY][18 June] Getting back on track

Planned progress
Checking Line plot


  • Corrected draw_line function
  • Updated draw_lines function
  • Passed all the tests for Line plot


  • GR backend does not have line colours
  • Magick backend colours all the lines same as the last colour given
  • Line types have not been implemented
  • A potential problem in Frontend of Line plot: When only one array is given to the Line plot, it considers it as x values and y values are adjusted accordingly whereas in Matplotlib’s plot function, this data is considered as y values and x values are adjusted accordingly. So, is it correct @v0dro?


  • Complete the blog ASAP.
  • Check Error bar plot
  • Implement draw_arrow function

[RUBYPLOT-GSOC][DAILY][19 June] The plots

Planned progress
Working on Error bar plot


  • Passed basic tests for Error bar plot


  • What are arrows? They are not drawn in GR backend either? The x1,x2, y1,y2 are said to be coordinates of head and tail of the arrow, what does the tail refer to? @v0dro please let me know about this
  • Magick backend plots the lines beyond the axes (outside plotting window)
  • Arrow styles are not implemented


  • Complete the blogs
  • Implement arrows
  • Improving Error bar plot
  • Completing remaining work

[RUBYPLOT-GSOC][DAILY][20 June] The plots

Planned progress
Working on the Error bar plot


  • Improved the blogs


  • The blog will be completed soon


  • Complete the Blogs
  • Check box plot

[RUBYPLOT-GSOC][DAILY][21 June] Improvements

Planned progress
Working on Box plot


  • Passed the tests for box plot
  • Corrected default marker type for draw_markers and the variable for nominal factor
  • Added a hash of lambdas for line types
  • Improved draw_lines and draw_line functions



  • Blog update
  • Code review

[RUBYPLOT-GSOC][DAILY][22 June] Code Review

Planned progress
Working on Box plot


  • Started the code review for first evaluation



  • Complete the code review
  • Complete the blogs
  • Work on violin plot

[RUBYPLOT-GSOC][DAILY][23 June] Sunday

Had a weekly meeting with @v0dro. To-do list till Phase 1 evaluation ends:

  1. Finish the Blogs
  2. Implement Ticks
  3. Write documentation and host it at readthedocs (mostly) and the website should update the docs when the code is updated
  4. Leaving violin plot for now as it lacks the frontend
  5. Correcting the overlapping of title and X-axis title of figures having multiple vertical subplots
  6. Determining the opacity for bubble plot
  7. Looking into legend box for bar plot
  8. Correcting the y inversion of subplots in Magick
  9. Correct the frontend of Line plot
  10. Use another library for testing
  11. Implement arrows
  12. Introduce a minimal factor to make the line width of Magick backend same as GR
  13. Test bar plots for multiple bar plots in the same subplot