Written in Python 2 using the Mayavi library (Mayavi is not well supported in Python 3 yet). Although this code is not specific to Python 2, so it should be easily generalisable to Python 3.
Everything is in SI units
Future work: magnetic field around torus, electrodynamics, perhaps a Java wrapper that allows people to move things around
Change input file. By default, this is a positive charge located at the origin. All files should be saved in the data folder. All files should be of type csv with the first row being front matter (the first row is ignored in the code). The input for the file argument should just be a string of the name, no extension (csv) required. e.g: --file "five_charge"
Determine which graph is drawn (vector field or field lines; electric or magnetic) e.g: --e_vector
Change grid size and distance between points within grid. By default, the grid is from -10 to 10 on all 3 axis with 1 m between each point. e.g: --grid "-10 10 1 -10 10 1 -10 -10 1"
Change the number of field lines rendered for field line plot. By default this is 5, increasing the number means more lines are drawn, decreasing means less. e.g: --lines 10