Thursday, April 25, 2024
HomeMatlabtwentieth Anniversary – Most Energetic FEX Entries » File Alternate Choose of...

twentieth Anniversary – Most Energetic FEX Entries » File Alternate Choose of the Week


Jiro‘s picks this week are the next 4 entries:
This yr was twentieth anniversary of MATLAB Central, and to rejoice we held a few contests, the Treasure Hunt and the Mini Hack. 5 years in the past, I wrote this publish to spotlight essentially the most lively/interactive File Alternate entry, as a part of the fifteenth anniversary. On this publish, let’s take a look at among the most lively and interactive File Alternate entries within the final 5 years.

Entries with most feedback

Identical to final time, let’s first have a look at the entries with essentially the most variety of feedback posted within the final 5 years (Jan 2017 to Dec 2021).

load FEX2017to2021.mat addonsAfter2016 commentsAfter2016 versionsAfter2016

addonsAfter2016 = sortrows(addonsAfter2016,“NumComments”,“descend”);

bar([addonsAfter2016.NumAuthorComments(1:10), addonsAfter2016.NumUserComments(1:10)],“stacked”)

title(“Variety of feedback (since Jan 2017)”)

xticklabels(addonsAfter2016.NameShort(1:10))

set(gca,“TickLabelInterpreter”,“none”)

legend(“Creator Feedback”, “Person Feedback”, “Location”, “northeast”)

Wordcloud on feedback

We see that some entries have feedback principally from customers, whereas others have extra feedback from the writer of the entries, suggesting a “dialog” between the customers and the writer. After all, entries with feedback principally from customers aren’t any much less useful. Doing a fast phrase cloud on the feedback on “MATLAB File Affiliation & Shortcut Repair” appears to indicate a number of reward for the entry.

addonsAfter2016 = sortrows(addonsAfter2016,“NumComments”,“descend”);

% Extract all feedback from “MATLAB File Affiliation & Shortcut Repair”

textData = commentsAfter2016.Remark(commentsAfter2016.AddOnUUID == addonsAfter2016.AddOnUUID(1) & ~commentsAfter2016.IsCommentByContributor);

title(“Feedback: ” + addonsAfter2016.Title(1))

Entries with most writer feedback

Let’s examine which entries had many feedback from authors.

addonsAfter2016 = sortrows(addonsAfter2016,“NumAuthorComments”,“descend”);

bar([addonsAfter2016.NumAuthorComments(1:10), addonsAfter2016.NumUserComments(1:10)],“stacked”)

title(“Variety of feedback (since Jan 2017)”)

xticklabels(addonsAfter2016.NameShort(1:10))

set(gca,“TickLabelInterpreter”,“none”)

legend(“Creator Feedback”, “Person Feedback”, “Location”, “northeast”)

Very good! These entries appear to have a pleasant steadiness between writer and consumer feedback.

Most up to date entries

How about variety of updates? Entries which can be incessantly up to date point out that they’re actively maintained by the writer.

addonsAfter2016 = sortrows(addonsAfter2016,“NumUpdates”,“descend”);

bar(addonsAfter2016.NumUpdates(1:10))

title(“Variety of updates (since Jan 2017)”)

xticklabels(addonsAfter2016.NameShort(1:10))

set(gca,“TickLabelInterpreter”,“none”)

Taking a look at just a few metrics

We already see just a few entries that present up in a number of bar charts. Let’s attempt to visualize just a few of those metrics collectively and see which of them stand out.

First, I will arbitrarily select entries which have at the very least 100 feedback since Jan 2017.

addonsAfter2016_over100comments = addonsAfter2016(addonsAfter2016.NumComments > 100,:);

numEntries = peak(addonsAfter2016_over100comments)

47 entries. That is quantity to work with.

Let’s calculate the ratio of writer feedback to all feedback and type primarily based on the ratio. I do that, since I needed to see which entries had a comparatively massive variety of writer feedback in comparison with general feedback.

addonsAfter2016_over100comments.AuthorCommentRatio = addonsAfter2016_over100comments.NumAuthorComments ./ addonsAfter2016_over100comments.NumComments;

addonsAfter2016_over100comments = sortrows(addonsAfter2016_over100comments,“AuthorCommentRatio”,“descend”);

We’ll now have a look at the next 3 metrics:

  1. Variety of writer feedback
  2. Ratio of writer feedback to general feedback
  3. Variety of updates

I’ll rank the 47 entries primarily based on these metrics and have a look at a heatmap.

[~, id_author_comments] = kind(addonsAfter2016_over100comments.NumAuthorComments,“descend”);

[~, id_author_ratio] = kind(addonsAfter2016_over100comments.AuthorCommentRatio,“descend”);

[~, id_updates] = kind(addonsAfter2016_over100comments.NumUpdates,“descend”);

rankings(id_author_comments,1) = 1:numEntries;

rankings(id_author_ratio,2) = 1:numEntries;

rankings(id_updates,3) = 1:numEntries;

heatmap(rankings,“XDisplayLabels”,[“Num Author Comments”,“Author Comment Ratio”,“Num Updates”],

“YDisplayLabels”, addonsAfter2016_over100comments.NameShort)

Listed here are the entries that ranked in underneath 10 in all three classes.

selectedEntries = addonsAfter2016_over100comments(rankings(:,1) < 10 & rankings(:,2) < 10 & rankings(:,3) < 10,:);

selectedEntries(:,[“Name” “ID” “Author” “NumComments” “NumAuthorComments” “AuthorCommentRatio” “NumUpdates”])

Visualize interactions

Let us take a look at the timings of the interactions in these entries. You will discover that these interactions occur constantly, which is nice to see.

Systemic Danger

This entry has had the very best variety of updates on this time-frame, which have probably been motivated by the various feedback from the customers.

createTimelinePlot(1,selectedEntries,commentsAfter2016,versionsAfter2016)

fitVirusCOVID19

As you may expects, this one got here out quickly after the pandemic outbreak. You see a number of discussions taking place the primary half of 2020.

createTimelinePlot(2,selectedEntries,commentsAfter2016,versionsAfter2016)

spider_plot

This entry has been chosen as a decide of the week a few instances up to now. The primary Choose was on Oct 2019, and you may see that Moses began to extend his replace frequency round that point.

createTimelinePlot(3,selectedEntries,commentsAfter2016,versionsAfter2016)

xiangruili/dicm2nii

The file updates for this entry have stopped, however Xiangrui continues to speak together with his customers by the feedback.

createTimelinePlot(4,selectedEntries,commentsAfter2016,versionsAfter2016)

Feedback

Congratulations to those 4 entries. MATLAB Central and File Alternate exist due to the neighborhood contributions. We recognize the discussions it’s a must to enhance the standard of the content material on this web site! Please inform us what you assume right here or depart a remark to the authors.

Helper perform for creating timeline plot

perform createTimelinePlot(id,selectedEntries,commentsAfter2016,versionsAfter2016)

commentsForEntry = commentsAfter2016(commentsAfter2016.AddOnUUID == selectedEntries.AddOnUUID(id),:);

x = commentsForEntry.Date;

y = 2*ones(peak(commentsForEntry),1);

y(commentsForEntry.IsCommentByContributor) = 3;

versionsForEntry = versionsAfter2016(versionsAfter2016.AddOnUUID == selectedEntries.AddOnUUID(id),:);

scatter(x,y,100,“MarkerEdgeColor”,“none”,“MarkerFaceColor”,“blue”,“MarkerFaceAlpha”,0.25)

plot([versionsForEntry.Date, versionsForEntry.Date]’,

[1*ones(1,height(versionsForEntry));zeros(1,height(versionsForEntry))],“r”);

yticklabels([“Updates”, “User Comments”, “Author Comments”])

title([selectedEntries.Name(id) selectedEntries.Author(id)],“Interpreter”,“none”)

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments