Replace Highcharts plotting library with open source alternative
I am working on implementing Altair, https://altair-viz.github.io/index.html
It is possible to implement charts where we calculate the mean or median at the server, then send the results to the browser:
# Create a Pandas DataFrame from the database events and annotations
df = pd.DataFrame.from_records(database_events.values(db_display_name_relationship, "db_series_names_to_use").annotate(**summary_annotations).order_by("db_series_names_to_use"))
df.rename(columns={db_display_name_relationship:"x_ray_system_name"}, inplace=True)
df.rename(columns={"db_series_names_to_use":"data_point_name"}, inplace=True)
# Change Decimal values to float so that to_json() works (Decimal values can't be JSON serialised)
df["mean"] = df["mean"].astype(float)
# Create a chart
chart = alt.Chart(df).mark_bar().encode(
column=alt.Column("data_point_name"),
x=alt.X("x_ray_system_name"),
y=alt.Y("mean"),
color="x_ray_system_name"
).interactive()
It is also easy to implement charts where we supply Altair with all of the data, and get the browser’s JavaScript to calculate the mean or median:
# Create a Pandas DataFrame from the database events
df = pd.DataFrame.from_records(database_events.values(db_display_name_relationship, "db_series_names_to_use", db_value_name))
df.rename(columns={db_display_name_relationship:"x_ray_system_name"}, inplace=True)
df.rename(columns={"db_series_names_to_use":"data_point_name"}, inplace=True)
# Change Decimal values to float so that to_json() works (Decimal values can't be JSON serialised)
df["mean"] = df[db_value_name].astype(float)
# Disable the max rows allowed in an Altair chart
alt.data_transformers.disable_max_rows()
# Create a chart
chart = alt.Chart(df).mark_bar().encode(
column=alt.Column("data_point_name"),
x=alt.X("x_ray_system_name"),
y=alt.Y(db_value_name, "mean"),
color="x_ray_system_name"
).interactive()
Sending all of the data to the browser could result in problems (maybe memory issues, or slow behaviour?). However, I wonder if keeping all the data may have advantages that I am not aware of at the moment (easy histograms in the browser, perhaps?).
29/8/2020 update: I’m now using all of the data in the data frame so that I can easily use Altair for average-over-time charts. I’ll need to test whether this is OK for large amounts of data from a server and client perspective. I’ll need to try it on a “standard” computer’s browser (my laptop has 32 GB RAM, and my desktop 64 GB).
Might be useful: https://medium.com/plotly/introducing-plotly-express-808df010143d
To do:
-
FAILED: Sort out the width of the new Altair charts
- Replaced Altair with Plotly - size now more-or-less fixed
-
DONE: Plumb in over-time chart time period
- DONE: Add choice of box plot or bar chart for “average” charts (if “median” selected then a boxplot is produced)
- DONE: Add static Plotly JavaScript files rather than current links to latest on-line versions
- DONE: Rationalise chart production code to avoid duplication of database queries (“study” and “request” level queries can share the same routines, with appropriate fields collected in the Pandas DataFrame)
- DONE: Separate the new chart code into one function per chart. Pass each of these the Pandas DataFrame
- DONE: Add charts of CTDIvol and DLP vs patient weight
- DONE: Add chart of requested procedure DLP over time
- DONE: Add charts of acquisition protocol CTDI and DLP over time
- DONE: Workload chart: link an hourly chart to selected data in the daily chart? [actually sub-divided each day into hours in the same chart]
- DONE: Make it possible to sort average chart x-axes by frequency, name or value. Boxplots and frequency chart data is also sortable.
- DONE: Update mammo, radiographic and fluoro charts with this new code
- DONE: Add DX acquisition/study/request DAP vs patient mass
- DONE: Calculate histogram data using Numpy in Python and creating a Plotly barchart rather than embedding all the data in a Plotly Histogram chart (https://numpy.org/doc/stable/reference/generated/numpy.histogram.html). Should improve browser responsiveness if large number of histograms plotted.
- DONE: Unlink the y-axes of the over-time sub-plots
- DONE: added mammography charts of average AGD and average AGD vs. compressed thickness
- DONE: Add MG chart of average acquisition AGD over time
- DONE: Add RF charts of study description and requested procedure name DAP over time
- DONE: Add RF chart of study description and requested procedure name DAP and frequency per physician
- DONE: add option to fix histogram bins across subplots, or have bins calculated per subplot
- FIXED: Switching charts “on” from home page before doing anything causes “Not found” error when trying to redirect to http://127.0.0.1:8000/&plotCharts=on
- ON-HOLD: Add RF chart of # events per study description and requested procedure name - future
- ON-HOLD: Add RF filter for physician - future
- PARTIAL: Add button to download plotted data as csv; DONE for average bar charts and frequency charts
Comments (324)
-
reporter -
reporter A sortable bar chart using d3 (http://github.com/d3/d3/wiki/Gallery):
-
reporter Charts based on https://readthedocs.org/projects/django-nvd3/ which enables http://nvd3.org/ in Django; which in turn uses https://d3js.org/
-
reporter Plotly again:
The code is open source (MIT licence): https://github.com/plotly/plotly.py; https://stackoverflow.com/questions/35511111/plotly-python-totally-free
The python library looks good: https://plot.ly/python/
Perhaps use this in off-line mode (https://plot.ly/python/offline/) combined with pandas dataframes, as done in this example: https://plot.ly/python/graph-data-from-mysql-database-in-python/
https://github.com/asherkhb/plotly-demo/blob/master/2016-09-13_python-presentation.pdf
-
reporter -
reporter I think I'm going to take a look at using Plotly, probably with cufflinks. This should allow interactive Pandas charting with Plotly
-
Looks great. I assume it all works nicely offline?
-
reporter I'm not sure. I need to have a play about with it, and check the licences.
-
reporter import plotly.offline as opy import cufflinks as cf import pandas as pd import numpy as np # Create a Pandas dataframe, populated with some data df = cf.datagen.lines() # Create a stacked bar chart figure from the dataframe fig = df.iplot(kind='bar', barmode='stack', asFigure=True) # Show the plot in a web page that's automatically opened opy.plot(fig) # Send the plot to a variable that contains all the required html in a div. # This could be used in a Django view as the thing to return to an html template div = opy.plot(fig, auto_open=False, output_type="div")
-
reporter Replace
fig = df.iplot(kind='bar', barmode='stack', asFigure=True)
with
fig = df.iplot(kind='box', asFigure=True)
for a boxplot, or
fig = df.iplot(kind='line', asFigure=True)
for a line plot.
-
reporter This may be useful for turning Django query sets into Pandas dataframes: https://github.com/chrisdev/django-pandas
-
reporter Undoing the changes I mistakenly made to view.py and models.py. References issue
#477→ <<cset b46a005846e8>>
-
reporter Undoing the change I mistakenly made to view.py - 2nd try. References issue
#477→ <<cset a848654c6e58>>
-
reporter Added a pie chart showing the number of each requested procedure. References issue
#477→ <<cset 7c1b19017918>>
-
reporter Switching on debug. I think I've miseed some python package/s. References issue
#477→ <<cset 1c0616112f03>>
-
reporter Adding requirement for django-pandas. References issue
#477→ <<cset 1cd7541f24b9>>
-
I had to install ipython in addition to the ipython-something that was installed automatically before the examples you posted previously would work on my statement.
-
reporter Adding ipython to the requirements and switching off debug. References issue
#477→ <<cset d175bb2d2bb1>>
-
reporter Added missing comma. References issue
#477→ <<cset 6dbb7cdb4f1b>>
-
reporter May have to resort to long-hand plotly to produce grouped box plots.
-
Just had a look on my laptop rather than just on my phone - those box plots are going to make a lot of people very happy - some because they can get a feel for the distribution, others to get their misunderstood 75th centiles!
-
reporter Added a boxplot that shows a series per CT scanner. References issue
#477→ <<cset 280a588ecc22>>
-
reporter My new grouped box plot doesn't seem to like it when there's missing requested procedure names
-
reporter Fixed broken grouped boxplot when requested procedure name is None. Also added a routine to return a list of colours that can be used for plotting (these are a bit muddy at the moment). References issue
#477→ <<cset 4a95399bb3c6>>
-
reporter Corrected y axis label on one boxplot, and added it on the other. References issue
#477→ <<cset 2c2318caf2c1>>
-
reporter @LuukO , back in September 2017 you e-mailed @edmcdonagh and myself with some great suggestions about HL7 messaging and charts. In your message you included an example boxplot that you'd created using mpld3. I've always liked the idea of boxplots, and have just started to try some Plotly charts out in OpenREM - see http://testing.openrem.org/openrem/ct/?requested_procedure=ct.
The boxplot at the top is created using cufflinks (https://plot.ly/ipython-notebooks/cufflinks/). Cufflinks is indended to be an easy way to create plotly charts from pandas dataframes.
The second boxplot is created using a longer method, but one that allows more flexibility. This one has a box per CT scanner. It's based on this code: https://plot.ly/python/box-plots/#grouped-box-plots.
Before I get carried away, I'd really like your thoughts on the charting, and the associated filtering of the data to produce the charts.
Kind regards,
David
-
reporter Added histograms into the mix. Only now plotting what is asked for (the plotly charts respect the 'series per system' and 'histogram' settings). Pie chart of request frequency only shown if it's selected by the user. There's a problem with using Plotly charts as I'm doing at the moment: python passes the browser a big chunk of html and javascript for each chart. Plotting lots of charts eats up lots of (server) RAM. On my test system I get an out of memory error if I switch on histograms without filtering the data first. It may be that we should be calculating the data for charts in python, and then just passing the required information to a JavaScript Plotly library. Not sure if this will help. References issue
#477→ <<cset 50c7e1f6bb21>>
-
@dplatten, I actually thinking you can't define beforehand all graphs that users want to see. So I was thinking about user definable charts and have actually something running. The user can select a graph type: scatter plot, histogram, box/whisperplot and next to that the parameter on the x and y axis and a "grouping/series" parameter:
The result is a graph and below the graph some descriptive statistics (scatterplot: DLP versus weight, group on display name):
or (box and whisper: DLP versus display name)
It is partly implemented, only for CT and the number of CT parameters are limited so far. It uses the filter set at the modality filter-page. But you actually might want to do some more advanced filtering and maybe also to event-level to be able to select specific CT-aqcuisitions and look at the CTDIvol. I'm also using numpy and pandas for this, but Bokeh for the graphics part (mpld3 seems to (almost) stopped development and doesn't implement all functionality of the underlying library, matplotlib). The problem is time at the moment. I hope to be able to work on this (filtering and user definable graphs) in some months again as I see need for it at least in our institution (people don't want to export to excel first to make graphs they like).
-
Wow.
You have both done some very exciting work on this.
@LuukO, are you able to push your efforts into a branch in this repo so we can see what you have been working on?
-
I've to look at pushing this to a branch (but probably can). It was a sort of see-what-you-can-do-pilot and it worked out quite well, but it didn't get any further than that (it actually is used at the moment: I get complaints....;-)). It shouldn't be to hard to extend to other modalities. I also like the possibility of these charts that you can click on a marker and that this will bring you to the specific study (details page in a different browsertab).
I'll see if I have some time on Friday to have a look at pushing this.
-
reporter @LuukO , your work-in-progress looks great. I have just been playing about with Plotly.
I agree that it would be good to allow the user to define their own chart types. I think we should have some pre-defined charts, and the ability for the user to make others.
What complaints to you get from your users?
-
I just pushed branch RelatedTo477UserDefinableCharts (commit 9bc7dac). You need bokeh 0.12.9 for this to work.
The complaints are that users want to have it available for other modalities and also want to have more possibilities. We have a saying in Dutch: "Give them a finger and they want the whole hand". I don't know if there is an English equivalent, but it means something like if you help a little, they want more help (all the time).
-
Hi @LuukO. I have just pushed your branch to http://testing.openrem.org and it looks great. One issue is that it doesn't handle non-ascii strings very well, so it will fail if you don't filter to remove them first. If you filter by display name 'CT scanner' then all is well.
I've left debug mode active for the moment.
-
@edmcdonagh, thanks for publishing this. I really want to know what you all would expect this to do. This was just a proof of concept. Probably I can work on it in a few months and it would be good to think about functionality and the chart library we are going to use (also for the charts @dplatten has) in the meanwhile. I would think we will use one library in the end.
-
reporter I think we should put together a statement of requirement for the charting. I also think that we should carry out an options appraisal to examine the different charting libraries. I'll make a start on these, possibly posting them here. It will need to be possible for others to comment or edit what I draft.
-
I'll have a think about how we might do that... We could just have a .rst or a markdown file in the stuff folder that can be commented on and edited in the browser, or people can fork the repo and submit pull requests against it (on a branch) maybe?
Or there is a wiki function to bitbucket that I haven't activated that maybe could be used?
Did you have any ideas?
-
reporter I think that the wiki function here on bitbucket might be good - less clunky than editing an .rst file. This would also be easily visible to other OpenREM users. I think it would be good to have input on the future of the charts from the wider OpenREM community.
-
reporter RE: plot.ly passing large amounts of data to the browser. It's possible to carry out a plot.ly boxplot by just providing the aggregate data. See https://community.plot.ly/t/box-plots-manually-supply-median-and-quartiles-performance-for-alrge-sample-sizes/2459. I'll have a play with this at some point, using PostgreSQL to calculate the quartiles and median values.
-
reporter -
Hi @dplatten - I've enabled the wiki if you want to go and see if it might work for us for this purpose: https://bitbucket.org/openrem/openrem/wiki/Home
It is currently set to public read, users with repository access can edit. There is an option to allow public write (presumably with a bitbucket login).
-
Hi @David Platten - where are you with plans for replacing HighCharts? Does it fit in with all the other major overhaul work that is about to start?
-
reporter Moving to Python 3.5+ will enable us to use Altair, which is appealing https://in.pycon.org/cfp/2019/proposals/building-interactive-data-visualisations-with-altair-django~ep51a/
I need to have a think about the charting and discuss the options with users / developers.
-
reporter My charting comparison from a while ago is on the wiki:
-
reporter Simple Altair-based chart working for mean or median DLP per requested procedure name. No histograms at the moment, and the chart formatting isn't great. However, the chart creation and display works. References issue
#830and issue#477→ <<cset 4c5102ae9fb6>>
-
reporter - edited description
-
reporter Added some test code that makes the browser JavaScript calculate the mean or median values (not implemented for the combined plot of mean and median). This may cause memory or performance issues I think, due to the potentially very large object size passed to the browser. References issue
#830and issue#477→ <<cset 5cca47bd06c9>>
-
reporter Commended out the 'raw' charts - the ones where the server calculates the aggregates are faster (on my i9 laptop). References issue
#830and issue#477→ <<cset 2f3beaae2eb4>>
-
reporter Removed HighCharts-related JavaScript. Added tooltip, legend title, y-axis title. I've tried to make the chart fit the DIV, but cannot work out how to do that at the moment. References issue
#830and issue#477→ <<cset c8f2992c8e03>>
-
reporter Added stacked bar chart in place of pie chart for frequency of requested procedure names. Produces a bar per x-ray system (an improvement on the pie chart). References issue
#830and issue#477→ <<cset b362805a40c6>>
-
reporter Added Altair charts for remaining CT frequency and average charts. References issue
#830and issue#477→ <<cset ecdbd6353a7f>>
-
reporter Switched average plots so that the categories are stacked vertically (one column, lots of rows). This avoids an issue where the width gets too large. References issue
#830and issue#477→ <<cset f1cf683996ad>>
-
Do the Altair plots have a dynamic 'category' selection function, or am I jumping the gun?
-
reporter Added commented-out line to sort freqency chart legend by descending frequency rather than alphabetically. References issue
#477→ <<cset 785d9de78cd3>>
-
reporter Added test code for chart of mean over time. Still a work-in-progress. References issue
#477→ <<cset 0c91cef212fa>>
-
reporter @Ed McDonagh I don’t know what you mean by “dynamic category selection function”…
-
Being able to deselect topogram, monitoring, premonitoring etc
-
reporter Improved chart of average value over time. Not yet 'plumbed-in' to the correct DIV. References issue
#477→ <<cset d54aee4b31b7>>
-
reporter Re-write of some chart code. Using raw query data in a single function to calculate average chart, frequency chart and also average over time chart. Incomplete. References issue
#477→ <<cset 113cac739a62>>
-
reporter Repaired broken frequency chart. References issue
#477→ <<cset 23bd119de499>>
-
reporter Updated average over time and number of events charts with new Altair code. Need to plumb in the user-defined time period for the over time chart. References issue
#477→ <<cset fa593ee9527c>>
-
reporter - edited description
-
Which charts in particular need checking @David Platten ? I could try with my production database copy on my often limping Ubuntu VM! Probably not till this evening though.
-
On my VirtualBox VM @David Platten , a CT filter of four CT units for TAP scans since 2010, ~96,000 studies, the page load was 32 seconds (not unusual on this system to be so slow), and the median study DLP over time in days with a series per system took a further 15 seconds, which is a lot quicker than I’m used to with HighCharts. Smaller filter ranges give the chart in just a few seconds, so it seems to work well.
However, it appears that the per day setting is ignored, and just presents per month no-matter what is selected - has this setting not been plumbed in yet?
-
reporter @Ed McDonagh thanks for checking. I haven’t plumbed in the date choice for the over time chart yet. Glad the charts works ok on your VM system. I’m going to add boxplots too, perhaps as a user choice (bar chart or boxplot).
-
@David Platten - it would be good to be able to plot CTDIvol and DLP vs patient weight in the browser if it works sufficiently fast. Thanks.
-
reporter - edited description
-
reporter - edited description
-
reporter Made legend interactive. Clicking on a legend entry reduces the opacity of other entries to 0.1. Multiple entries can be selected using shift+click. Clicking somewhere off a legend entry returns all entries to opacity of 1.0. Also fixed typo in frequency chart key name. References issue
#477→ <<cset faf75a8bb297>>
-
reporter Over-time chart now uses mean or median, rather than being hard-coded to mean. References issue
#477→ <<cset fd2bb57e76b3>>
-
reporter CT over-time chart now respects user choice of time period. Removed weekly option as this is not available as an Altair TimeUnit transform. Rotated text on x-axis of over-time chart by 90 degrees. References issue
#477→ <<cset b259aeee4f9e>>
-
reporter Removed unrequired JavaScript and buttons from the CT over-time chart. References issue
#477→ <<cset a367610f6a09>>
-
reporter Changed Vega imports to use major versions. Haven't worked out how to use local files for this yet. References issue
#477→ <<cset 44666c993c6b>>
-
reporter Increased limit on legend entries to 250 in the over-time chart. Changed legent title so it reflects the provided category name. References issue
#477→ <<cset c4e8ed82ccb2>>
-
reporter Increased legend entry limit on frequency plots to 250. References issue
#477→ <<cset 6aa02258a56e>>
-
reporter Frequency chart legend entries now sorted in order of descending frequency. Also increased maximum legend entries to 250 and changed legend title to reflect the chart content. References issue
#477→ <<cset 3675ac6cefaf>>
-
reporter Added histograms for CT requested names. Further work required. References issue
#477→ <<cset e97d56218440>>
-
reporter Added tooltip to histograms. References issue
#477→ <<cset 66e7b36fd330>>
-
reporter Separate data for each system in histograms now; click on legend to show / hide series. Average chart of mean and median now plotted correctly (not stacked). References issue
#477→ <<cset c242425290f1>>
-
reporter Temporary replacement of bar chart code with boxplot code as proof-of-concept. Boxplots do not support selections at the moment, so cannot click on the legend to change opacity of any of the series. References issue
#477→ <<cset 485f8701c8e5>>
-
reporter Commented out boxplot code and reenabled bar chart code. Added CT request histograms to their own HTML DIV. References issue
#477→ <<cset e65ef70ef496>>
-
reporter Removed unnecessary JavaScript global variables. References issue
#477→ <<cset c447d1d33cee>>
-
reporter Case-insensitive setting: removed unnecessary annotation of the QuerySet; doing this in the Pandas DataFrame instead. I've also just realised that we don't need the database median function anymore, as the averages are calculated by Altair: medians will now work with any database (although I've not verified that this works). References issue
#477and#241→ <<cset af235ae18b13>>
-
reporter Removed the checks for median availability from the CT chart section of view.py. References issue
#477and#241→ <<cset d1b04d1c35ce>>
-
reporter Updated CT study workload chart so it now uses Altair. References issue
#477→ <<cset b62cbd1dc26b>>
-
reporter - edited description
-
reporter Started to look at setting width of charts to fit container. This seems to break the ability to select series via the legent - look at inspect window in Chrome. References issue
#477→ <<cset 41b5c1f17493>>
-
reporter - edited description
-
reporter Refactored Altair chart code into separate functions per chart type. Added all CT histograms. All CT charts now using Altair. Workload chart doesn't have per-hour data at the moment. References issue
#477and#830→ <<cset 2e9307e994b9>>
-
reporter Added a Plotly boxplot and bar chart if CT requested DLP chart is chosen. References issue
#477→ <<cset 345f0cd010a7>>
-
reporter @Ed McDonagh would you take a look at the example Plotly charts that I have added? You need to select the CT DLP per requested procedure chart for them to show up. I think that Plotly may be better than Altair. The charts resize properly for a start, and I think I’ll be able to make a button to save the plotting data as csv. Any thoughts welcome.
-
reporter Useful link for aggregation in Pandas DataFrames:
https://jakevdp.github.io/PythonDataScienceHandbook/03.08-aggregation-and-grouping.html
-
I’ve thrown it onto testing (after updating the requirements to add plotly) and it looks really good - testing.openrem.org DLP per requested procedure
On my data it was really crowded, but I wasn’t looking at a well curated dataset!
-
reporter Adding local Plotly and Vega (for Altair) JavaScript libraries. References issue
#477→ <<cset 6b661ab8354d>>
-
reporter Forgot to add the new files... References issue
#477→ <<cset c5aae47daf7b>>
-
reporter Adding Plotly histograms; just for CT requested procedure name at the moment. References issue
#477→ <<cset 96029efb90a4>>
-
reporter Removed Altair from CT request charts. Added JavaScript to resize Plotly to size of div. References issue
#477→ <<cset 59bf418a7f0f>>
-
reporter Fixed resizing JavaScript so that it works when the mean and median (boxplot) charts are present. Removed the fullstops from the chart titles. References issue
#477→ <<cset b805c5664381>>
-
reporter Trying to make a full screen toggle button for the Plotly chart. Not quite there yet, but nearly. References issue
#477→ <<cset 8066a1e09713>>
-
Can I assume that we’ve reached the point where this gets a 1.0.0 target?
-
reporter Sorted out the full-screen. Need to address responsiveness of resizing after fullscreen exit. References issue
#477→ <<cset 22070ecaa80e>>
-
reporter Updated resize code with something that should work with Internet Explorer (untested). Trying to get resize to work. Nearly there. Plotly menu is mid-way down the plot after exiting full-screen. Not sure why. References issue
#477→ <<cset eae6a811ea50>>
-
reporter Chart formatting after return from full-screen now working correctly. References issue
#477→ <<cset 29d327217dd2>>
-
reporter Implemented Plotly charts for CT acquisition (DLP and CTDI). Tightened the scope of some JavaScript variables. References issue
#477→ <<cset 46d5c84935a5>>
-
reporter Implemented Plotly charts for the remaining CT average charts. Need to produce a Plotly frequency chart, over-time chart and workload chart. References issue
#477→ <<cset d96e672fa43a>>
-
reporter Merging develop into issue830histogramChartProblem and fixing conflict. References issue
#477→ <<cset 8621a83dedac>>
-
reporter Implemented Plotly charts for the CT frequency charts. Need to produce a Plotly over-time chart and workload chart. References issue
#477→ <<cset 329a6a872d31>>
-
reporter Added Plotly time series CT chart. Added 'Weeks' option back in, and also 'Quarters'. If the user has selected 'Both' as the average choice then two line charts are produced: one of mean values, and one of medians. At the moment the averaging takes place up to the end of the time period. For example, if the user has selected 'Months' then there will be a data point on the last day of each month that is the average of the studies that took place up to that date. References issue
#477→ <<cset 4927ded5099a>>
-
reporter Added Plotly chart of workload per weekday. Haven't added the ability to look at studies within each hour of the day yet. References issue
#477→ <<cset b24c31b75ba6>>
-
reporter - edited description
-
reporter - edited description
-
reporter Added scatter plots of DLP and CTDI vs patient mass for each acquisition protocol. Not sure if it works because my test system has no patient mass data. Will check on the online testing.openrem.org server. References issue
#477→ <<cset 14e2435007e7>>
-
reporter Added user option to group histograms and scatter charts by system name or series item name. References issue
#477→ <<cset 010f994a49ed>>
-
reporter - edited description
-
reporter Replaced the repeat chart sections in ctfiltered.html with a loop, reducing length of this file by around 500 lines (!). References issue
#477→ <<cset 48aac8ada665>>
-
reporter Removed Altair imports from CT chart section of views.py. Added short description for new method. References issue
#477→ <<cset ec3adce51a09>>
-
reporter Made over-time period more generic so I can use it for some new over-time plots that I am planning. Over-time charts can now respect the grouping choice. References issue
#477→ <<cset b59543d8ae65>>
-
reporter Added over-time period charts for CT acquisition CTDI and DLP and also requested procedure DLP. Added warning message if a particular chart cannot be calculated (too many categories it seems). References issue
#477→ <<cset 08afefa0c4ba>>
-
reporter - edited description
-
Is there a choice of colours with the plotly charts? Looking at the demo site done of the colours aren’t that nice…
I found this really interesting:
https://twitter.com/Datawrapper/status/1301875472079425536
@Datawrapper: New blog post! Do you know the colors in your charts look bad, but don't know what to do? We wrote an article to help. Here are 13 ideas that will improve your #dataviz colour choices: https://t.co/4aa53caVpE
-
reporter @Ed McDonagh yes, there’s lots of choice (https://plotly.com/python/builtin-colorscales/). I plan to give the user a choice about which to use.
The HighCharts plots use the Red-Yellow-Blue diverging Brewer colour scale (https://colorbrewer2.org/#type=diverging&scheme=BrBG&n=3).
-
Great
-
reporter Added user option to select Plotly theme. References issue
#477→ <<cset 82e86ba3ee67>>
-
reporter I mis-typed the issue number in commit 2e03f3b
-
reporter The colour map choices use some of the colour maps from Matplotlib (https://matplotlib.org/3.1.0/tutorials/colors/colormaps.html). The Matplotlib maps enable me to obtain as many different colours from the maps as I like. I couldn’t find a way to do that with the built-in Plotly colours (https://plotly.com/python/builtin-colorscales/).
-
reporter Avoiding divide by zero error by checking if n_colours is greater than 1. References issue
#477→ <<cset b094785d85b3>>
-
reporter Configured charts to hide the link to Plotly. Configured charts to save as 1920x1080 png files with a filename specific to each chart. References issue
#477→ <<cset 15ebc422daa3>>
-
reporter Configured charts to zoom when using mouse wheel or pinching. References issue
#477→ <<cset 739f04fbe356>>
-
reporter Configured facet charts to be 4 wide. Considering adding this as a user profile option. References issue
#477→ <<cset 59e6d0d94049>>
-
reporter Configured facet chart column wrap as a user-profile option. Defaults to 3. References issue
#477→ <<cset bd3f0f196967>>
-
reporter - edited description
-
reporter Added hour divisions to the study workload chart. References issue
#477→ <<cset ca1a1f313d96>>
-
reporter Switched colours in workload chart to the frequency values (thought I already had). References issue
#477→ <<cset c7f3d856e1a0>>
-
reporter - edited description
-
reporter Box plot and average bar chart data can now be sorted with name, value or frequency in ascending or descending order. Frequency plots can be sorted in frequency or name order. References issue
#477→ <<cset cda550fd97bb>>
-
reporter Increased max length of DX and RF sorting choice field to accommodate the word 'frequency'. I'm pretty sure this is why the pipeline failed for the previous commit. References issue
#477→ <<cset 5da9310c8e9e>>
-
reporter - edited description
-
reporter - changed milestone to 1.0.0
-
reporter Calculating aggregates for mean bar charts and frequency charts in Python (already calculating these for over-time and workload charts). Should make it easier to implement tests. Made remaining charts respect sorting order. References issue
#477→ <<cset 37a051d2ecd7>>
-
reporter Refactored construction of frequency chart to make views.py code more straightforward. References issue
#477→ <<cset c12f6db9eeb0>>
-
reporter Refactored construction of scatter chart to make views.py code more straightforward. References issue
#477→ <<cset 3faaba1b9b1b>>
-
reporter Removed category sorting from within boxplot. References issue
#477→ <<cset fd1e6e2f685b>>
-
reporter Refactored construction of over-time charts to make views.py code more straightforward. References issue
#477→ <<cset 693f7e03f86b>>
-
reporter - edited description
-
reporter Updated existing mammography charts to use Plotly. References issue
#477→ <<cset f1e451be1db2>>
-
reporter Updated existing fluoroscopy charts to use Plotly. Need to carefully check that dataframes contain all the data I think: had an issue with just a frequency plot where the 10000+ studies resulted in a dataframe with 87 rows. These were all the unique requested names. I have added the study_instance_uid field to each data frame to ensure that every study is represented. However, I'm not sure if there are implications for individual acquisitions. References issue
#477→ <<cset 79ccc21dc00a>>
-
reporter Attempting to sort out issue where query set rows with matching values only appear once in data frame. This commit doesn't fix it. References issue
#477→ <<cset 536d0ae62aad>>
-
reporter Added study_instance_uid to dataframe to ensure that data is obtained for every required study. If this is not used then the .distinct() that is applied to the source queryset means that only unique field combinations are returned. Also added multiplier for fluoro dataframe to make DAP values cGy.cm2. References issue
#477→ <<cset 53e34513a70e>>
-
reporter Implemented Plotly charts for radiographic page. Deleted non-Plotly code from the chart calculations. Added logic to extend height of facet-based charts when multiple rows are present (250 px per row; minimum height of 750 px). References issue
#477→ <<cset 667a2f284b01>>
-
reporter Deleted non-Plotly JavaScript files and removed HighCharts-specific code from another file. References issue
#477→ <<cset b39ebbba0db0>>
-
reporter Implemented superscripts and subscripts where appropriate. References issue
#477→ <<cset c17ecda91cfb>>
-
Hi @David Platten
For the DX charts, can we have acquisition/study DAP vs pt weight please?
Also, on testing it is telling me that DAP isn’t a valid choice for chart sorting.
-
reporter Looking at a simple bar chart of median as well as mean, with boxplot as an additional option. Implemented for rf study chart. I like the simple median chart as the boxplot can be a bit busy, especially if there are a large number of outliers that compress the median values. References issue
#477→ <<cset 744b2110a428>>
-
reporter Added median chart to other rf plot. References issue
#477→ <<cset b1644f459858>>
-
reporter - edited description
-
reporter @Ed McDonagh I have changed the names of the sorting choices, so the first time you go to the page it will give you the “DAP isn’t a valid choice” message. Just pick one of the new choices and click submit and you should never see that message again.
I’ve changed the options to be more generic: “Name, Value or Frequency”
I think there should be more mammo and fluoro charts. What might you find useful?
-
@David Platten I’ve brought the current branch into my system with a copy of the production database, but I can’t get any charts to render!
For mammo and fluoro, the spinning never stops. For CT, I get the message
Could not resolve chart. Try filtering the data to reduce the number of categories or systems.
I haven’t experimented extensively with different combinations of charts and options.
Somehow DX did work (Chart of median DAP for each study description)
-
reporter @Ed McDonagh that message comes up when Plotly has a ValueError when constructing a plot, usually because there are so many systems or series that the facet-based plots fail.
Can you try single plots, using the “system” grouping option and see how you get on?
-
reporter Adding detail to error message if charts fail and debug is on. Adjusted facet_row_spacing so I think the error is unlikely to appear now; may result in a large number of sub-plots and put a strain on the browser. References issue
#477→ <<cset 0e8f6f921280>>
-
reporter Importing settings from django.conf and removing erroneous line in construct_scatter_chart - thanks Ed. References issue
#477→ <<cset 1f483a4a5e85>>
-
reporter Added radiographic charts of acquisition, study and requst DAP vs patient mass. Ed - please feed back on these as I have no radiographic patient mass data in my test system. References issue
#477→ <<cset 1e31e3345949>>
-
reporter - edited description
-
Can I check @David Platten - has this branch changed the filtering (using charts or not) for acquisition level filters?
I ask because if I have DX with a study filter and an acquisition filter, it takes a very long time to return (if it does). If I remove the acquisition level filter, it comes back in a reasonable time.
I haven’t done the proper investigations (checking the develop branch for the same behaviour etc) - I just wanted to check first off if you think it has changed.
-
reporter @Ed McDonagh the filtering hasn’t changed for DX.
-
Thanks
-
reporter Adjusting facet_row_spacing based on number of rows. References issue
#477→ <<cset 67dd2048e020>>
-
reporter First attempt at histogram chart calculated in Python using Numpy. Only active for histograms of the CT chart of requested procedure DLP. References issue
#477→ <<cset f496a2816e42>>
-
reporter Numpy-based histograms now working. Only implemented for CT requested procedure chart at the moment. All data calculated in Python; just bar values passed to browser. References issue
#477→ <<cset a51448610465>>
-
reporter Converting all named columns and the system name column in the data frame to be of type 'category'. This saves a significant amount of (server) system memory. References issue
#477→ <<cset dddce69b44be>>
-
reporter Switched all histograms to use the new Numpy-based histograms. All histogram data now calculated in Python; just bar values passed to browser. References issue
#477→ <<cset 1383a15276ce>>
-
reporter Removing unrequired square brackets. References issue
#477→ <<cset dedfe14f6569>>
-
reporter Added uid field to dataframe creation. Need a study (request) level one for those charts, and an acquisition-level one for the acquisition charts. I expect a similar approach will work with the other modalities, provided that the xx_acq_filter is being used (which it is not at least for DX). References issue
#477→ <<cset 1f20e7c43ff8>>
-
reporter Switching to using the pk of the appropriate table rather than uid because the pk occupies less memory. References issue
#477→ <<cset 3b2920d44c0b>>
-
reporter Switched to using dx_acq_filter for radiographic charts. Now using separate acquisition- and study/request-level data frames for radiographic charts. I think the radiographic charts. References issue
#477→ <<cset 6442f657fa32>>
-
reporter Fixed sorting of frequency chart categories so it matches other charts. References issue
#477→ <<cset 44a6b7303708>>
-
reporter Adding uid fields to MG and RF data frames. References issue
#477→ <<cset 1a57dace5646>>
-
reporter Added some spacing between rows of histogram facets. Adding value labels to x and y axes for scatter and line plots. References issue
#477→ <<cset fdabb6854ae1>>
-
reporter Changed chart average choice to be mean, median, boxplot. Implemented for all modalities. Ensuring the frequency charts are sorted in the same way as any existing average charts. References issue
#477→ <<cset 632fb4b76e06>>
-
reporter - edited description
-
reporter Added mammography chart of average AGD in specificed compressed breast thickness bands. Need to add user-option to configure the bands. Need to amend upper and lower bin labels to make it clear that lowest bin includes any values below min, and upper bin includes any values above the max value. Will probably add an extra bin at the top and bottom if the user choice does not incorporate all the data. Refs issue
#477→ <<cset 6db517cf496d>>
-
reporter Forgot to add logic to include fields in data frame for new chart. Would be good to indicate number of values included in each bar in tooltip. Refs issue
#477→ <<cset df7dc05dc738>>
-
reporter Added frequency to the tooltip of each bar. Refs issue
#477→ <<cset e5deb18352e9>>
-
reporter Added bin at either end to capture data below and above the user-specified range. Removing nan data before calculating the binned stats chart or scatter chart. Refs issue
#477→ <<cset faa3874ae50d>>
-
reporter Added check that there is still data for a particular category after nan has been removed. Using .values for histogram and binned_statistic functions. Refs issue
#477→ <<cset 111b666d038f>>
-
reporter @Ed McDonagh the compressed breast thickness bands are hard-written into the chart code at the moment. I would like to enable each user to choose their own bands, via a database table linked to their UserProfile. I’m not sure how to go about doing that, and wondered if you might be able to help?
-
reporter Corrected mis-titled boxplots. Refs issue
#477→ <<cset 88dbc2e80c5d>>
-
reporter Refactored chart code in views into four separate views_charts_xx.py files. Not passed through Black yet. References issue
#477→ <<cset ee6e646ae684>>
-
reporter Sourcecode has been run through Black. References issue
#477→ <<cset 0c79d3920095>>
-
reporter Added mammography chart of average AGD per acquisition protocol. Corrected hover label error for average bar charts. Refs issue
#477→ <<cset 3a1446c9bd94>>
-
Haven’t isolated it, but in trying to look at the average AGD chart, I go this:
/path/to/my/venv/lib/python3.8/site-packages/numpy/lib/histograms.py:433: RuntimeWarning: invalid value encountered in greater
Chart of AGD vs compressed breast thickness for each acquisition protocol and Chart of mean AGD for each acquisition protocol were both selected.
-
reporter I’ll take a look tomorrow
-
reporter Trying to fix the bug that Ed found - this might do it. Refs issue
#477→ <<cset c3791fe7a71d>>
-
reporter Added mammography acquisition frequency chart. Corrected sorting option for other frequency charts. Refs issue
#477→ <<cset 92e357e5cbf9>>
-
reporter Added mammography histograms. Altered wording of chart titles. Mammo study workload data incorrect at the moment as it is using acquisition numbers rather than study numbers. Refs issue
#477→ <<cset 06ac493e2e30>>
-
reporter Modified mammo chart views so there is an acquisition-level data frame and a study/request level one. Study workload chart now correct. Refs issue
#477→ <<cset cfe1c70ab7f9>>
-
reporter Correcting tooltip for study workload charts. Refs issue
#477→ <<cset f47102112834>>
-
reporter Adding utility code to create swatches of each chart colour map choice. I'm going to incorporate these images into the form where the user chooses which colour map they want to use. Refs issue
#477→ <<cset 7b19a78f6953>>
-
reporter Added colour swatches to the chart options form. Refs issue
#477→ <<cset 6e4baf230ef8>>
-
reporter Updated available colour maps (removed any with white in the middle). Simplified form template a little. Refs issue
#477→ <<cset 62934a192e7c>>
-
reporter Simplified the chart options template. Refs issue
#477→ <<cset f6935109b941>>
-
reporter - edited description
-
reporter Added label around each list item so that the user can click on the swatch to select it, rather than having to specifically click on the radio button. Added a 1px border around each colour swatch. Refs issue
#477→ <<cset 9ac1596cdab0>>
-
reporter Corrected error in default value of chart grouping choice. Refs issue
#477→ <<cset 4d2032b24e3e>>
-
reporter Adding option for chart code to return a Python dict instead of HTML. This will enable tests to be run on the charts. Refs issue
#477and #686→ <<cset f63db4f2c2b6>>
-
reporter Plumbing dict option into the view. Correcting an error with the CT num events charts that was preventing some from being displayed or calculated. Refs issue
#477and #686→ <<cset 8d1ca21edaa6>>
-
reporter Adding initial DX chart tests. Refs issue
#477and issue #686→ <<cset c0d239497d5d>>
-
reporter Passed code through Black. Refs issue
#477and issue #686→ <<cset 4522780ef28d>>
-
reporter Added tests on boxplot data. Refs issue
#477and issue #686→ <<cset 94de10362a88>>
-
reporter Added an additional comment [skip ci]. Refs issue
#477and issue #686→ <<cset febfb3d23de3>>
-
reporter Reduced length of code a little using some for statements. Refs issue
#477and issue #686→ <<cset 7ce805520295>>
-
reporter Added tests of DX acquisition frequency chart. Refs issue
#477and issue #686→ <<cset fedd3ed1263a>>
-
reporter Added method to compare average and count values - saves lots of lines of code. Swapped order of two radiographic charts. Refs issue #686 and
#477→ <<cset 25ca12bbaf8d>>
-
reporter Added script to extract DICOM tags to help with DX chart tests. References issue
#477→ <<cset 8aec464533d8>>
-
reporter - edited description
-
reporter Added tests of radiographic histograms. Fixed bug in dx chart view relating to kVp and mAs histograms (phew for tests!). Refs issue
#477→ <<cset 83ad5fd3e699>>
-
reporter Added tests of radiographic acquisition kVp. Improved box plot checking so it sorts data pairs first by value then by name so that the order is consistend when there are several pairs with the same name but different values. Refs issue
#477→ <<cset 28df086695fd>>
-
reporter Modifying boxplot data test so it is more robust. Refs issue
#477→ <<cset 40af3293c5eb>>
-
reporter Removing two redundant methods in the chart code. Refs issue
#477→ <<cset 82f2d18af0d2>>
-
reporter Added tests of radiographic study workload chart data. Refs issue
#477→ <<cset de8df72000ed>>
-
reporter Simplified over-time setting. Refs issue
#477→ <<cset 55889fc2e25a>>
-
reporter Added tests of acquisition DAP over time. Refs issue
#477→ <<cset d5c3638bc13d>>
-
reporter Added tests of (empty) acquisition DAP vs mass chart. Refs issue
#477→ <<cset e767d7f49d58>>
-
reporter Added tests of median acquisition DAP over time, and mean and median acquisition kVp and mAs over time. Refs issue
#477→ <<cset 4c6103d56452>>
-
reporter Started to add mammography chart tests. Refs issue
#477→ <<cset 620f1ccf9cf3>>
-
reporter Now using check_boxplot_xy checking method for mammo boxplot test so that order of data pairs doesn't matter. Refs issue
#477→ <<cset 2fd7ba730b7e>>
-
reporter Initial mammography chart tests now working locally: I had missed out when setting the required charts. Hopefully they will run on BitBucket too. Refs issue
#477→ <<cset 817d87db0275>>
-
reporter Added remaining mammography chart tests. Ran the code through Black on my Linux desktop... Refs issue
#477→ <<cset 9628238586e1>>
-
reporter Setting up CT chart tests. Refs issue
#477→ <<cset 508d5e2fadd7>>
-
reporter Adding tests of CT acquisition DLP. Refs issue
#477→ <<cset 821705529ae1>>
-
reporter Some colour maps that I thought were available are not. Removing these and adding some others that are present. Refs issue
#477→ <<cset 5ab93c430aa9>>
-
reporter Corrected bug in DX chart code where study and request level dataframe was calculated whatever the user had set. Adding specific format to study date as this speeds up the conversion when a large number of entries is being handled. Refs issue
#477→ <<cset fc8965ab6592>>
-
reporter Showing x-axis labels on all workload sub-charts. Refs issue
#477→ <<cset 0b30039abadb>>
-
reporter Removing display of weekday index in workload charts. Reducing memory footprint of weekday chart dataframe. Upgrading pandas to the latest version. Refs issue
#477→ <<cset 4a71d3f1e339>>
-
reporter Addressing failed tests (hooray for tests) Adding display of weekday back into workload charts; changed weekday field back to object so the full name is displayed (uses more memory). Refs issue
#477→ <<cset 997067f34c98>>
-
reporter - edited description
-
reporter Added check for empty dataframes in histogram chart method. Refs issue
#477→ <<cset 670268671727>>
-
reporter Modified check for nan values in binned statistic chart. Corrected labels in the same chart. Refs issue
#477→ <<cset 42c959d5984c>>
-
reporter If the query set is empty then don't try to create any charts. Refs issue
#477→ <<cset bde14e6db011>>
-
reporter Black reformat and removal of unused variable. Refs issue
#477→ <<cset d10ff72e9fde>>
-
reporter Added symbols to mammo avg AGD vs thickness; also updated tests. Refs issue
#477→ <<cset 0ec1cc973b27>>
-
reporter - edited description
-
reporter Added mammography chart of average AGD over time. Refs issue
#477→ <<cset 5ca6522a643d>>
-
reporter Added display of frequency in the hover data for each data point in over-time charts. Added check for empty data frame. Added appropraite label for series name in the hover, such as 'Acquisition protocol' or 'Study description'. Refs issue
#477→ <<cset f2fdfa62a27a>>
-
reporter Corrected typo in CT time period - it was set to use the DX value. Refs issue
#477→ <<cset 747c7283d365>>
-
reporter Switched scatter-based charts to WebGL renderer - faster. Refs issue
#477→ <<cset d25727df527f>>
-
reporter - edited description
-
reporter Replaced 'Swich charts off' option in the main menu with one that switches them off if they're already on, or on if they're currently off. Refs issue
#477→ <<cset 895f21b12b86>>
-
reporter Adding issue
#233to the changes file for this branch. Refs issue#477and issue#233→ <<cset 90fae18464cc>>
-
reporter - edited description
-
reporter - edited description
-
reporter Added RF charts of request and study DAP over time. Refs issue
#477→ <<cset 40af7ab5ffc8>>
-
reporter - edited description
-
reporter Adding a couple of commented-out lines for creating a facet bar chart with average per physician. Refs issue
#477→ <<cset e4558f787ec3>>
-
reporter Fixed error in sorting choice for RF charts. Refs issue
#477→ <<cset f35b3bc8176c>>
-
reporter Added facility to split RF average charts (mean, median, boxplot) by physician. Refs issue
#477→ <<cset 7a6cd96508f8>>
-
reporter Added facility to split RF frequency charts by physician. Refs issue
#477→ <<cset 5f0725ad5c14>>
-
reporter - edited description
-
reporter Revised redirect when charts switched on using config menu. Now works from all pages. Refs issue
#477→ <<cset 85079011ef19>>
-
reporter Resolving merge conflicts. Refs issue
#477→ <<cset 77b0e7945ca7>>
-
reporter - edited description
-
reporter Added option to fix histogram bins across all subplots for a particlar chart, or have bins calculated for each individual subplot. Refs issue
#477→ <<cset 03752292c6bb>>
-
reporter - edited description
-
reporter Updading changes file [skip ci]. Refs issue
#477and issue#830→ <<cset a40097c7407d>>
-
reporter Removing Vega JavaScript files as not needed for Plotly charts. Refs issue
#477→ <<cset 48dacf9c3fe1>>
-
reporter Addressing Codacy issues in chart_functions.py. Moved all imports to top of the file. Refactored error message into a method. Also now showing color map names next to the swatch on the chart options page. Refs issue
#477→ <<cset b19b4a14fd65>>
-
reporter Labelling mark_safe entries in forms.py as # nosec so it is ignored by Codacy. I believe that running Black will move this comment to the end of the line, stopping it from working... Refs issue
#477→ <<cset cfc155ac00ba>>
-
reporter Addressing Codacy issues. Moved imports to top of the file. Added # nosec for uses of mark_safe. Refs issue
#477→ <<cset b2ccb51619ec>>
-
reporter Addressing Codacy issues. Removed duplicate variables in models.py and forms.py. Removed Median class, median_available and plotAverageChoice fields from models.py. Refs issue
#477→ <<cset 71cc4f31ae44>>
-
reporter Addressing Codacy issues. Reordered some imports. Renamed stats parameter. Simplifying if statement logic by using any() when there are lots of choices. Refs issue
#477→ <<cset 226466d0a780>>
-
reporter Addressing Codacy issues. Reordered some imports (again). Trying to stop too long flag where it is unavoidable. Refs issue
#477→ <<cset 317df75eb272>>
-
reporter Removed check for numpy in views.py and views_admin.py that set plotting variable: this is never used. Also rearranged order of imports in views.py. Refs issue
#477→ <<cset 36b5ff619881>>
-
reporter Moving view.py imports to the top of the file as per Codacy. Refs issue
#477→ <<cset bbfe2450cac0>>
-
reporter Reordering view.py imports as per Codacy. Refs issue
#477→ <<cset 5efbe749cc40>>
-
reporter Moving views_admin.py imports to the top of the file as per Codacy. Refs issue
#477→ <<cset 22a924326f73>>
-
reporter Moving imports a bit. Also sending create_dataframe a dictionary of fields to reduce the number of local variables. Will do something similar with the plot creation routines if Codacy is happy. Refs issue
#477→ <<cset b7ff530b1923>>
-
reporter Hopefully sorting out ignoring of some long lines. Refs issue
#477→ <<cset f975125b660b>>
-
reporter Hopefully sorting out ignoring of some long lines. Updating mammo acquisition dataframe creation with new code. Refs issue
#477→ <<cset 820bf6eb3256>>
-
reporter Reduced local variables in plotly_boxplot method. Changed order of required_charts in each view so that it matches the order that the charts appear in the chart form. Refs issue
#477→ <<cset 10e7d2d97552>>
-
reporter Disabling long line checks. Refs issue
#477→ <<cset 8ebfc908ecda>>
-
reporter Reduced local variables in over-time chart methods. Refs issue
#477→ <<cset c0cd6f827d45>>
-
reporter Reduced branches in create_dataframe. Added missing MG fields in views_admin.py. Refs issue
#477→ <<cset ef20ae8051d5>>
-
reporter Fixed bug in previous commit. Phew for tests! Refs issue
#477→ <<cset cdb03ce567f1>>
-
reporter Trying to disable too many branch pylint in methods to generate required charts. Refs issue
#477→ <<cset d8f64afd2743>>
-
reporter Trying to disable too many branch and too many statements pylint in some methods where I can't see a way to address them. Refs issue
#477→ <<cset 57ec48c56730>>
-
reporter Removing unused junk variable to avoid Codacy complaints. Refs issue
#477→ <<cset 22447f73eba5>>
-
reporter Trying to disable too many lines and too many local variables where I can't see a way to address them. Refs issue
#477→ <<cset 00313d4893d1>>
-
reporter Reducing number of local variables for scatter plot. Refs issue
#477→ <<cset 653d5571cc71>>
-
reporter Trying to disable too many lines and too many local variables again. Also supressing some long line messages. Refs issue
#477→ <<cset 857e26a72c70>>
-
reporter Reduced number of local variables for plotly_barchart. Refs issue
#477→ <<cset bc71ec0dd96c>>
-
reporter Reduced number of local variables for binned statistic chart. Refs issue
#477→ <<cset 54cda0a348fd>>
-
reporter Disabling pylint check of number of local variables for binned statistic chart. Refs issue
#477→ <<cset ff42d3bdc22b>>
-
reporter Reduced number of local variables for scatter charts. Refs issue
#477→ <<cset 91908d5ebf22>>
-
reporter Simplified scatter chart code. Refs issue
#477→ <<cset 155b81a33e07>>
-
reporter Simplified histogram chart code. Refs issue
#477→ <<cset b45e988d6502>>
-
reporter Disabling pylint check of number of local variables for histogram. Changed import of pickle so there is no renaming. Still works. Added pylint disable-line-too-long in views_charts_dx.py. Refs issue
#477→ <<cset a3b6ce5e1a06>>
-
reporter Simplified frequency chart code. Refs issue
#477→ <<cset bcbe07197b6e>>
-
reporter Disabling pylint checking of copyright message and pickle security issue. Refs issue
#477→ <<cset 0e059c07ba69>>
-
reporter Trying to disable pickle pylint warning. Refs issue
#477→ <<cset 99a208ca926b>>
-
reporter Disabling pylint too many lines check. Refs issue
#477→ <<cset 6e7c682e4c5b>>
-
reporter Added tick marks to some charts to help define categories. Refs issue
#477→ <<cset 88e7848cd90a>>
-
reporter Adding a blank line before some class docstrings to see if it placates Codacy. Refs issue
#477→ <<cset 0dbcc7867457>>
-
reporter Adding height_multiplier parameter that was missing from some chart types. Refs issue
#477→ <<cset 350bfd0c7c6d>>
-
reporter - edited description
-
reporter Refactored a couple of methods. Changed chart height to 500 px. Refs issue
#477→ <<cset cbee6df0880f>>
-
reporter Combined xaxes update lines in one chart. Changed order of a couple of lines so they match across chart types. Refs issue
#477→ <<cset aa1786df4eb2>>
-
reporter Setting pylint to ignore too many lines in two files. Refs issue
#477→ <<cset 5a2095b68036>>
-
reporter - edited description
-
reporter Added button to download chart data as csv for fluoroscopy average bar charts. Refs issue
#477→ <<cset a83e03ad8084>>
-
reporter Added button to download chart data as csv for mammography average bar charts. Refs issue
#477→ <<cset 14e3c436c8ff>>
-
reporter Added button to download chart data as csv for CT average bar charts. Refs issue
#477→ <<cset be0d7be7bd82>>
-
reporter Added button to download chart data as csv for radiographic average bar charts. Refs issue
#477→ <<cset 0499f122b0ee>>
-
reporter - edited description
-
reporter Modified how csv download data works for average bar charts. Made csv download available for frequency charts. Refs issue
#477→ <<cset c362792d6ae7>>
-
reporter Fixing error that caused tests to fail - phew for tests. Refs issue
#477→ <<cset 591ef6196560>>
-
reporter Addressing a couple of Codacy issues. Refs issue
#477→ <<cset b8904931ee16>>
-
reporter Disabling D203, 1 blank line before docstring. This conflicts with D211 apparently (https://github.com/PyCQA/pydocstyle/issues/141). Refs issue
#477→ <<cset 73f50e07f508>>
-
reporter - edited description
-
Hi @David Platten . Is it possible to isolate a series name for the charts?
So if I have four CT scanners, and I want to compare the Thorax^TAP protocols by weight, I can either group by system and disable all the extraneous series names in the charts, which gives me a system per chart.
Or I can group by series name and then I get all the scanners (with matched protocol series names!) on one chart, but I have 20 other charts of all the extraneous series names.
Is there anything I can use to get me a cleaner display?
-
reporter Does putting Thorax^TAP in the acquisition filter do what you want?
-
Doh! Yes - adding the acquisition name of TAP cuts it down to a much more manageable five charts!
-
reporter - changed status to resolved
Merged in issue830histogramChartProblem (pull request #419)
Issue830histogramChartProblem
Approved-by: David Platten dplatten@gmail.com Approved-by: Ed McDonagh ed@mcdonagh.org.uk
Fixes issue
#477Fixes issue#830→ <<cset dc01dd816939>>
-
reporter Fixing issue where exclusion of lots of missing data causes height of each chart subplot to be very large. Calculating the chart height after the exclusion fixes this. Refs issue
#477→ <<cset d5927e1f6a63>>
-
reporter Added user profile option to remove trailing whitespace from category names. Refs issue
#867and issue#477→ <<cset a9a80289678d>>
-
reporter Removed the rainbow and jet colour scale options. Refs issue
#477→ <<cset 5ff192441f38>>
-
reporter Updating Plotly JavaScript to 1.58.2 to go with Plotly Python package version 4.14.1. Refs issue
#477→ <<cset 219b7eb4131e>>
- Log in to comment
A dashboard demo using plotly: http://moderndata.plot.ly/create-a-plotly-dashboards-in-under-10-minutes/