Code for NCRN bird visualizer
ncrn / birdviz Goto Github PK
View Code? Open in Web Editor NEWCode for NCRN bird visualizer
Code for NCRN bird visualizer
Make the colors the same for the map and the graph
Replace plot in visualizer with detectsPlot()
from NCRNbirds
Replace the plot of BCI with BCIplot()
from NCRNbirds
Update to new version of Ebirds API.
This text is no longer up to date, it should be fixed.
Re-examine the situation with DT and data export.
Reverse order of items in BCI legend to match the graph.
Adjust slider highlighter so that only highlights one year at a time.
For the Data Tables add a Maximum Observed line or option where possible
Consider creating a filter that would highlight any bird considered a species of conservation concern by Partners in Flight. This would include the 2 categories: "watchlist species" and "stewardship species"
Other filters to consider creating would be native vs. non-native.
Migratory vs. resident
or any of the bird guild designations that come from the Bird Community Index score (ground nester, insectivore, etc.)
When you change from the Latin Name to AOU of Common name the species is not preserved. Fix this.
Change the colors to one of the viridis
palettes for accessibility and consistency.
Add switches to change networks in global.r
We need
NCRN
NETN
ERMN
MIDN
GULN
Missing values, either y or x values caused by no survey or species not observed in a survey, are causing problems with ggvis plotting correctly. Missing y-values cause ggvis to plot NA above max value and missing x-values (usually year) removes the year from the axis.
Transition to ggplot may solve these issues.
map and graph use different color ramps - fix.
If desired, provide radio button or force detectsPlot to show SE
Make sue of htmlwidgets
.
For individual species graphs, add an option to just see max observed rather than each visit.
This will require an update to NCRNbirds.
Make clear the limitations of this data.
Should just figure that out from the data
On graphs the years and number of plots now run together due to there being a lot of years. Fix this by putting number of plots underneath.
Have a bigger number of items per page so that it will show all entries on the species list and on the other tables in a single screen.
When you chose "Number of Species" on the map, the point color and the hover text respect your choice in the "Distance from Observer" drop down. However the species list generated when you click a point does not. The band
parameter is not being passed by getChecklist
to getBirds
.
When viewing MIDN data in the Tables tab the BCI by park section gives following error:
Error: length of 'dimnames' [2] not equal to array extent
For the visualizer it is probably best to remove Latin Names as an option, but print them next to the common name when there is space.
Add this for all plots
Now that getDesign()
exists bands should come from there rather than be hard coded.
The idea is that when you click a row on the table, the data can been seen on the map. Once all the controls have been altered, this will need to be reconnected to transfer all the filtering selections from the table tab to the map tab.
When you do a table for a single park it would be nice to have the upper table be just that park with each column a different year. Need to check that the table does not get too wide.
The map legend will disappear when you select "Any Distance Band" from the dropdown in the map controls.
Let users see BCI graph based on all visits or just some visits
On the map side bar - change control order to:
Species
Common Names
Year
Distance
Visit
Currently the map, table, plots and to some extent species lists all share some similar controls. It might be better if these were turned into "shiny modules" so the code only needs to be maintained in one place.
Possible controls are
Once NCNR/NCRNbirds#111 is done and there is cycle data available, then the year drop-down should be determined by the cycles, which in the case of ERMN is every 2 years rather than every year.
When you graph data, parks that don't have data for a species in each year (2006:2017) causes the app to crash in the indiv species graph (DetectsPlotData) .
In the species richness graphs, when there were no obs in a park, RichnessPlotData and then ggviss plots a 0 value instead of NA on the graph
in plots code, server.R:
labels=paste(paste(c(2006:2017), paste0("(",sapply(X=2006:2017,Y=PlotParkUse(),FUN=function(X,Y){nrow(getPoints(Y,years=X))}),")"))))
JP suggests to pull the actual years from getVisits()
when you open viz, map should zoom to bounds of selected network.
Once NCRN/NCRNbirds#74 is done, tables and graphs and maybe maps should be able to toggle to forest only, grassland only or all.
Distance from Observer. I see how this is dynamic now pulling from bands.csv but didn’t it used to have “any distance” as an option in the past? “Any distance” or “unlimited radius” seems more appropriate than the somewhat arbitrary 200 MaxDistance in the csv.
Upper table has “Error: length of ‘dimnames’ [2] not equal to array extent”. Fix.
Once we can filter the birds by this - we should add it to the tables.
On the map the zoom options should match each network's bands.
There are still some internal reactive dependencies being checked via the old validate (need() )
interface. This should be updated to req()
.
Replace the plot of species richness with richnessPlot()
from NCRNbids
ERMN: detectsPlot is plotting visits 1 and 2 as the same and 3 and 4 as the same, probably because they are surveyed on the same day.
Check all plots.
The maps, and tables and graphs should have species richness as the default choice, as that always has data, whereas the species richness will always have good data and be the more general choice. Change the controls to make richness be the default choice.
Now that getDesign()
exists, the Visits should come from there rather than being hard-coded.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.