From 3c3abad372ff3000b30dbd70af04d8502410908e Mon Sep 17 00:00:00 2001 From: Emad Aghayi Date: Wed, 22 Apr 2020 21:02:19 -0400 Subject: [PATCH] add panelists plot cahange size and font of onboarding --- DivergingPlot_Panelists.py | 346 ++++++++++++++++++++----------------- DivergingStackedBar_QOS.py | 2 +- Onboarding.py | 11 +- QOC.py | 2 +- SVGtoPDF.py | 6 +- data/Panelists.pdf | Bin 0 -> 3271 bytes data/Panelists.svg | 1 + data/Panelists2.pdf | Bin 0 -> 3271 bytes data/Qos.pdf | Bin 0 -> 3079 bytes data/Qos.svg | 1 + data/onboading.pdf | Bin 19950 -> 19996 bytes 11 files changed, 204 insertions(+), 165 deletions(-) create mode 100644 data/Panelists.pdf create mode 100644 data/Panelists.svg create mode 100644 data/Panelists2.pdf create mode 100644 data/Qos.pdf create mode 100644 data/Qos.svg diff --git a/DivergingPlot_Panelists.py b/DivergingPlot_Panelists.py index 719bd45..1469269 100644 --- a/DivergingPlot_Panelists.py +++ b/DivergingPlot_Panelists.py @@ -7,236 +7,282 @@ # Very_Good = [62.5,25.0,50.0,32.1,50.0,19.6] # Excellent =[12.5,23.2,25.0,25.0,12.5,19.6] -# Poor =1 Fair =2 Satisfactory =3 Very good =4 Excellent=5 +# Poor =1 Fair =2 Satisfactory =3 Very good =4 Excellent=5 # Control Clerity of Codebase of regular developement 10.7 21.4 28.6 19.6 19.6 -# Simplicity of Codebase of regular developement 8.9 12.5 30.4 25.0 23.2 -# Consistency of Codebase of regular developement 12.5 12.5 17.9 32.1 25.0 # Microasking Clerity of codebase of microtask programming 0.0 0.0 37.5 50.0 12.5 + +# Simplicity of Codebase of regular developement 8.9 12.5 30.4 25.0 23.2 # Simplicity of codebase of microtask programming 0.0 25.0 0.0 62.5 12.5 + +# Consistency of Codebase of regular developement 12.5 12.5 17.9 32.1 25.0 # Consistency of codebase of microtask programming 12.5 12.5 0.0 50.0 25.0 +# { "order": 1, +# "question": "-", +# "type": "Poor", +# "value": 0, +# "percentage": 0, +# "percentage_start": 0, +# "percentage_end": 0 +# }, +# { "order": 1, +# "question": "-", +# "type": "Fair", +# "value": 0, +# "percentage": 0, +# "percentage_start": 0, +# "percentage_end": 0 +# }, +# { "order": 1, +# "question": "-", +# "type": "Satisfactory", +# "value": 0, +# "percentage": 0, +# "percentage_start": 0, +# "percentage_end": 0 +# }, +# { "order": 1, +# "question": "-", +# "type": "Very Good", +# "value": 0, +# "percentage": 0, +# "percentage_start": 0, +# "percentage_end": 0 +# }, +# { "order": 1, +# "question": "-", +# "type": "Excellent", +# "value": 0, +# "percentage": 0, +# "percentage_start": 0, +# "percentage_end": 0 +# }, + source = alt.pd.DataFrame([ - { + + { "order": 1, "question": "Clarity (C)", "type": "Poor", - "value": 0, - "percentage": 0, - "percentage_start": 0, - "percentage_end": 0 + "value": 10.7, + "percentage": 10.7, + "percentage_start": -32.1, + "percentage_end": -21.4 }, - { + { "order": 1, "order": 1, "question": "Clarity (C)", "type": "Fair", - "value": 0, - "percentage": 0, - "percentage_start": 0, + "value": 21.4, + "percentage": 21.4, + "percentage_start": -21.4, "percentage_end": 0 }, - { + { "order": 1, "order": 1, "question": "Clarity (C)", "type": "Satisfactory", - "value": 1, - "percentage": 16, - "percentage_start": -8, - "percentage_end": 8 + "value": 28.6, + "percentage":28.6, + "percentage_start": 0, + "percentage_end": 28.6 }, - { + { "order": 1, "question": "Clarity (C)", "type": "Very Good", - "value": 5, - "percentage": 83, - "percentage_start": 8, - "percentage_end": 91 + "value": 19.6, + "percentage": 19.6, + "percentage_start": 28.6, + "percentage_end": 48.2 }, - { + { "order": 1, "question": "Clarity (C)", "type": "Excellent", - "value": 0, - "percentage": 0, - "percentage_start": 91, - "percentage_end": 91 + "value": 19.6, + "percentage": 19.6, + "percentage_start": 48.2, + "percentage_end": 67.8 }, - { + { "order": 1, "question": "Clarity (E)", "type": "Poor", - "value": 1, - "percentage": 16, - "percentage_start": -49, - "percentage_end": -33 + "value": 0, + "percentage": 0, + "percentage_start": 0, + "percentage_end": 0 }, - { + { "order": 1, "question": "Clarity (E)", "type": "Fair", "value": 0, "percentage": 0, - "percentage_start": -33, - "percentage_end": -33 + "percentage_start": 0, + "percentage_end": 0 }, - { + { "order": 1, "question": "Clarity (E)", "type": "Satisfactory", - "value": 4, - "percentage": 66, - "percentage_start": -33, - "percentage_end": 33 + "value": 37.5, + "percentage": 37.5, + "percentage_start": 0, + "percentage_end": 37.5 }, - { + { "order": 1, "question": "Clarity (E)", "type": "Very Good", - "value": 0, - "percentage": 0, - "percentage_start": 33, - "percentage_end": 33 + "value": 50, + "percentage": 50, + "percentage_start": 37.5, + "percentage_end": 87.5 }, - { + { "order": 1, "question": "Clarity (E)", "type": "Excellent", - "value": 1, - "percentage": 16, - "percentage_start": 33, - "percentage_end": 49 + "value": 12.5, + "percentage": 12.5, + "percentage_start": 87.5, + "percentage_end": 100 }, - { + + + { "order": 1, "question": "Consistency (C)", "type": "Poor", - "value": 0, - "percentage": 0, - "percentage_start": 0, - "percentage_end": 0 + "value": 12.5, + "percentage": 12.5, + "percentage_start": -12.5, + "percentage_end": -25 }, - { + { "order": 1, "question": "Consistency (C)", "type": "Fair", - "value": 0, - "percentage": 0, + "value": 12.5, + "percentage": 12.5, "percentage_start": 0, - "percentage_end": 0 + "percentage_end": -12.5 }, - { + { "order": 1, "question": "Consistency (C)", "type": "Satisfactory", - "value": 0, - "percentage": 0, + "value": 17.9, + "percentage": 17.9, "percentage_start": 0, - "percentage_end": 0 + "percentage_end": 17.9 }, - { + { "order": 1, "question": "Consistency (C)", "type": "Very Good", - "value": 5, - "percentage": 83, - "percentage_start": 0, - "percentage_end": 83 + "value": 32.1, + "percentage": 32.1, + "percentage_start": 17.9, + "percentage_end": 50 }, - { + { "order": 1, "question": "Consistency (C)", "type": "Excellent", - "value": 1, - "percentage": 17, - "percentage_start": 83, - "percentage_end": 100 + "value": 25, + "percentage": 25, + "percentage_start": 50, + "percentage_end": 75 }, - { + { "order": 2, "question": "Consistency (E)", "type": "Poor", - "value": 1, - "percentage": 17, - "percentage_start": -58, - "percentage_end": -75 + "value": 12.5, + "percentage": 12.5, + "percentage_start": - 12.5, + "percentage_end": -25 }, - { + { "order": 2, "question": "Consistency (E)", "type": "Fair", - "value": 2, - "percentage": 3, - "percentage_start": -58, - "percentage_end": -25 + "value": 12.5, + "percentage": 12.5, + "percentage_start": 0, + "percentage_end": -12.5 }, - { + { "order": 2, "question": "Consistency (E)", "type": "Satisfactory", - "value": 3, - "percentage": 50, - "percentage_start": -25, - "percentage_end": 25 + "value": 0, + "percentage": 0, + "percentage_start": 0, + "percentage_end": 0 }, - { + { "order": 2, "question": "Consistency (E)", "type": "Very Good", - "value": 0, - "percentage": 0, - "percentage_start": 25, - "percentage_end": 25 + "value": 50, + "percentage": 50, + "percentage_start": 0, + "percentage_end": 50 }, - { + { "order": 2, "question": "Consistency (E)", "type": "Excellent", - "value": 0, - "percentage": 0, - "percentage_start": 25, - "percentage_end": 25 + "value": 25, + "percentage": 25, + "percentage_start": 50, + "percentage_end": 75 }, - { + { "order": 1, "question": "Simplicity (C)", "type": "Poor", - "value": 1, - "percentage": 17, - "percentage_start": 0, - "percentage_end": -17 + "value": 8.9, + "percentage": 8.9, + "percentage_start": -12.5, + "percentage_end": -21.4 }, - { + { "order": 1, "question": "Simplicity (C)", "type": "Fair", - "value": 0, - "percentage": 0, + "value": 12.5, + "percentage": 12.5, "percentage_start": 0, - "percentage_end": 0 + "percentage_end": -12.5 }, - { + { "order": 1, "question": "Simplicity (C)", "type": "Satisfactory", - "value": 0, - "percentage": 0, + "value": 30.4, + "percentage": 30.4, "percentage_start": 0, - "percentage_end": 0 + "percentage_end": 30.4 }, - { + { "order": 1, "question": "Simplicity (C)", "type": "Very Good", - "value": 5, - "percentage": 83, - "percentage_start": 0, - "percentage_end": 83 + "value": 25, + "percentage": 25, + "percentage_start": 30.4, + "percentage_end": 55.4 }, - { + { "order": 1, "question": "Simplicity (C)", "type": "Excellent", - "value": 0, - "percentage": 0, - "percentage_start": 83, - "percentage_end": 83 + "value": 23.2, + "percentage": 23.2, + "percentage_start": 55.4, + "percentage_end":78.6 }, - { + { "order": 1, "question": "Simplicity (E)", "type": "Poor", "value": 0, "percentage": 0, - "percentage_start": -17, - "percentage_end": -17 + "percentage_start": 0, + "percentage_end": 0 }, - { + { "order": 1, "question": "Simplicity (E)", "type": "Fair", - "value": 1, - "percentage": 17, + "value": 25, + "percentage": 25, "percentage_start": 0, - "percentage_end": -17 + "percentage_end": -25 }, - { + { "order": 1, "question": "Simplicity (E)", "type": "Satisfactory", "value": 0, @@ -244,21 +290,21 @@ "percentage_start": 0, "percentage_end": 0 }, - { + { "order": 1, "question": "Simplicity (E)", "type": "Very Good", - "value": 4, - "percentage": 66, + "value": 62.5, + "percentage": 62.5, "percentage_start": 0, - "percentage_end": 66 + "percentage_end": 62.5 }, - { + { "order": 1, "question": "Simplicity (E)", "type": "Excellent", - "value": 1, - "percentage": 17, - "percentage_start": 66, - "percentage_end": 83 + "value": 12.5, + "percentage": 12.5, + "percentage_start": 62.5, + "percentage_end": 75 } ]) @@ -270,28 +316,16 @@ "Very Good", "Excellent" ], - range=["#c30d24", "#f3a583", "#cccccc", "#94c6da", "#1770ab"] + range=["#ff6361", "#ffa600", "#bc5090", "#58508d", "#003f5c"] ) -y_axis = alt.Axis( - title='', - offset=5, - ticks=False, - minExtent=60, - domain=False -) +y_axis = alt.Axis( title='', offset=5, ticks=False, minExtent=60, domain=False) -chart =alt.Chart(source).mark_bar().encode( - x='percentage_start:Q', - x2='percentage_end:Q', - y=alt.Y('question:N', axis=y_axis), - color=alt.Color( - 'type:N', - legend=alt.Legend(title='Response',orient='top'), - scale=color_scale, - ) -).configure_view(strokeWidth=0) +chart =alt.Chart(source,width=600,height=300).mark_bar().encode(x='percentage_start:Q',x2='percentage_end:Q', y=alt.Y('question:N', axis=y_axis), + color=alt.Color( 'type:N', legend=alt.Legend(title='',orient='top'), scale=color_scale, + )).properties(title='Quality of code of control (C) and experimental (E) groups').configure_view(strokeWidth=0) + # .configure_axis(labelFontSize=20, titleFontSize=20).configure_title(fontSize=20) chart.show() # chart.save('filename.pdf') \ No newline at end of file diff --git a/DivergingStackedBar_QOS.py b/DivergingStackedBar_QOS.py index d540a31..f97396a 100644 --- a/DivergingStackedBar_QOS.py +++ b/DivergingStackedBar_QOS.py @@ -270,7 +270,7 @@ ) -chart =alt.Chart(source).mark_bar().encode( +chart =alt.Chart(source,width=600,height=300).mark_bar().encode( x='percentage_start:Q', x2='percentage_end:Q', y=alt.Y('question:N', axis=y_axis), diff --git a/Onboarding.py b/Onboarding.py index 65a6889..49c936c 100644 --- a/Onboarding.py +++ b/Onboarding.py @@ -15,25 +15,26 @@ FirstLOCWidth = np.add(tutorial, training_task).tolist() firstTaskWidth = np.add(first_loc, FirstLOCWidth).tolist() # careful: notice "bottom" parameter became "left" - +# plt.figure(figsize=(5,7)) p0 = plt.barh(participants, training_task, color="#ffa600") p1 = plt.barh(participants, tutorial,left=training_task, color="#ff6361") p2 = plt.barh(participants, first_loc, left=FirstLOCWidth, color="#58508d") p3 = plt.barh(participants, first_task, left=firstTaskWidth, color="#003f5c") # we also need to switch the labels 003f5c -plt.xlabel('Time in minutes') +plt.xlabel('Time in minutes', fontsize=12) # plt.ylabel('Participants of controlled(Ci) and experimental(Ei) groups') plt.legend((p0[0],p1[0], p2[0], p3[0]), ('Training task', '\n'.join(wrap('Beginning of session until starting the first task', 25)), '\n'.join(wrap('Start first task/issue until writing first LOC', 25)), '\n'.join(wrap('Start first task/issue until finishing it', 25)) - )) -plt.title('Onboarding time of control(Ci) and experimental(Ei) participants') -plt.subplots_adjust(left=0.15, right=0.96, top=0.95, bottom=0.1) + ), fontsize=11) +plt.title( 'Onboarding time of control(Ci) and experimental(Ei) participants', fontsize=13) +plt.subplots_adjust(left=0.19, right=0.89, top=0.87, bottom=0.1) # remove the frame plt.gca().spines['right'].set_visible(False) plt.gca().spines['top'].set_visible(False) +# plt.figure(figsize=(5,5)) diff --git a/QOC.py b/QOC.py index aeb7952..e91cd5c 100644 --- a/QOC.py +++ b/QOC.py @@ -27,7 +27,7 @@ # plt.ylabel('Participants of controlled(Ci) and experimental(Ei) groups') plt.legend((p1[0], p2[0],p3[0],p4[0],p5[0]), ('Poor', 'Fairs','Satisfactory','Very Good','Excellent'),loc='lower left', bbox_to_anchor=(0,1.02,1, 0.2),mode='expand',ncol=5,borderaxespad=0) -plt.title('Quality of code by control (C) and experimental (E) groups',y=1.09) +plt.title('Quality of code of control (C) and experimental (E) groups',y=1.09) plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1) plt.gca().spines['right'].set_visible(False) plt.gca().spines['top'].set_visible(False) diff --git a/SVGtoPDF.py b/SVGtoPDF.py index d479f60..e6558d2 100644 --- a/SVGtoPDF.py +++ b/SVGtoPDF.py @@ -2,5 +2,7 @@ from reportlab.graphics import renderPDF, renderPM -drawing = svg2rlg("./data/visualization_1.svg") -renderPDF.drawToFile(drawing, "./data/QuestionVisualized.pdf") \ No newline at end of file +drawing = svg2rlg("./data/Panelists.svg") +renderPDF.drawToFile(drawing, "./data/Panelists2.pdf") +# drawing = svg2rlg("./data/Qos.svg") +# renderPDF.drawToFile(drawing, "./data/Qos.pdf") \ No newline at end of file diff --git a/data/Panelists.pdf b/data/Panelists.pdf new file mode 100644 index 0000000000000000000000000000000000000000..554d208c02f1de6af16b2d9334b428f32e6928df GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/data/Panelists.svg b/data/Panelists.svg new file mode 100644 index 0000000..18786d2 --- /dev/null +++ b/data/Panelists.svg @@ -0,0 +1 @@ +-40-30-20-100102030405060708090100percentage_start, percentage_endClarity (C)Clarity (E)Consistency (C)Consistency (E)Simplicity (C)Simplicity (E)PoorFairSatisfactoryVery GoodExcellentQuality of code of control (C) and experimental (E) groups \ No newline at end of file diff --git a/data/Panelists2.pdf b/data/Panelists2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7ad7c502b0dfe507090f861276e0405fc920ea32 GIT binary patch literal 3271 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 literal 0 HcmV?d00001 diff --git a/data/Qos.svg b/data/Qos.svg new file mode 100644 index 0000000..fd84814 --- /dev/null +++ b/data/Qos.svg @@ -0,0 +1 @@ +-80-70-60-50-40-30-20-100102030405060708090100percentage_start, percentage_endQuestion 1Question 2Question 3Question 4Question 5Question 6QuestionStrongly disagreeDisagreeNeither agree nor disagreeAgreeStrongly agreeResponse \ No newline at end of file diff --git a/data/onboading.pdf b/data/onboading.pdf index 647aaa407509274a3b138851194b4fb9b3c5998a..42fca280f5cdbdc8f30a28652eccb02f313bd076 100644 GIT binary patch delta 5478 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 delta 5432 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 X)bc1SI=)9wivxghN=e}iG&%nZ{(nWf