diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..159ebe09 Binary files /dev/null and b/.DS_Store differ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..39740548 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "/usr/local/opt/python@3.9/bin/python3.9" +} \ No newline at end of file diff --git a/README.md b/README.md index 7ee8e8fb..9e635a1c 100644 --- a/README.md +++ b/README.md @@ -3,140 +3,66 @@ Assignment 2 - Data Visualization, 5 Ways === -Now that you have successfully made a "visualization" of shapes and lines using d3, your next assignment is to successfully make a *actual visualization*... 5 times. - -The goal of this project is to gain experience with as many data visualization libraries, languages, and tools as possible. - -I have provided a small dataset about cars, `cars-sample.csv`. -Each row contains a car and several variables about it, including miles-per-gallon, manufacturer, and more. - -Your goal is to use 5 different tools to make the following chart: +The attempted graph: ![ggplot2](img/ggplot2.png) -These features should be preserved as much as possible in your replication: - -- Data positioning: it should be a downward-trending scatterplot as shown. Weight should be on the x-axis and MPG on the y-axis. -- Scales: Note the scales do not start at 0. -- Axis ticks and labels: both axes are labeled and there are tick marks at 10, 20, 30, etcetera. -- Color mapping to Manufacturer. -- Size mapping to Weight. -- Opacity of circles set to 0.5 or 50%. - -Other features are not required. This includes: - -- The background grid. -- The legends. - -Note that some software packages will make it **impossible** to perfectly preserve the above requirements. -Be sure to note where these deviate. -Improvements are also welcome as part of Technical and Design achievements. - -Libraries, Tools, Languages --- -You are required to use 5 different tools or libraries. -Of the 5 tools, you must use at least 3 libraries (libraries require code of some kind). -This could be `Python, R, Javascript`, or `Java, Javascript, Matlab` or any other combination. -Dedicated tools (i.e. Excel) do not count towards the language requirement. - -Otherwise, you should seek tools and libraries to fill out your 5. - -Below are a few ideas. Do not limit yourself to this list! -Some may be difficult choices, like Matlab or SPSS, which require large installations, licenses, and occasionally difficult UIs. - -I have marked a few that are strongly suggested. - -- R + ggplot2 `<- definitely worth trying` -- Excel -- d3 `<- since the rest of the class uses this, we're requiring it` -- Matplotlib -- three.js `<- well, it's a 3d library. not really recommended, but could be "interesting"` -- p5js `<- good for playing around. not really a chart lib` -- Tableau -- Java 2d -- GNUplot -- Vega-lite <- `<- recently much better. look for the high level js implementations` -- Flourish <- `<- popular last year` -- PowerBI -- SPSS - -You may write everything from scratch, or start with demo programs from books or the web. -If you do start with code that you found, please identify the source of the code in your README and, most importantly, make non-trivial changes to the code to make it your own so you really learn what you're doing. +# R + ggplot2 +I ran into a lot of bugs when trying to set up R and ggplot (and I also learned that most of the help out there is based on RStudio). However, once I got it up and running it was super simple to implement! Really surprised me. R seems to be the tool to use when you just want to visualize things and don't really care about incorporating it into a website. To visualize the data, I used ggplot2's geom_point -Tips ---- - -- If you're using d3, key to this assignment is knowing how to load data. -You will likely use the [`d3.json` or `d3.csv` functions](https://github.com/mbostock/d3/wiki/Requests) to load the data you found. -Beware that these functions are *asynchronous*, meaning it's possible to "build" an empty visualization before the data actually loads. - -- *For web languages like d3* Don't forget to run a local webserver when you're debugging. -See this [ebook](http://chimera.labs.oreilly.com/books/1230000000345/ch04.html#_setting_up_a_web_server) if you're stuck. - - -Readme Requirements ---- - -A good readme with screenshots and structured documentation is required for this project. -It should be possible to scroll through your readme to get an overview of all the tools and visualizations you produced. +I relied on documentation and this website (https://365datascience.com/tutorials/r-tutorials/ggplot2-scatter-plot/) and https://www.datanovia.com/en/blog/how-to-create-a-bubble-chart-in-r-using-ggplot2/to implement the visualization +![ggplot2](img/ggplot2.png) -- Each visualization should start with a top-level heading (e.g. `# d3`) -- Each visualization should include a screenshot. Put these in an `img` folder and link through the readme (markdown command: `![caption](img/)`. -- Write a paragraph for each visualization tool you use. What was easy? Difficult? Where could you see the tool being useful in the future? Did you have to use any hacks or data manipulation to get the right chart? +# Python + Altair + pandas +When I saw that Altair/Vega-lite had a Python version, I decided to give it a try! It did take a lot of debugging to get everything installed and ready to go, but it's kind of cool how you can just export the graph to an html file using Python. It also has a lot of possibilities for interactivity. -Other Requirements ---- +Because this library was created for JavaScript, it was a little bit weird to use JS-like syntax for python. -0. Your code should be forked from the GitHub repo. -1. Place all code, Excel sheets, etcetera in a named folder. For example, `r-ggplot, matlab, mathematica, excel` and so on. -2. Your writeup (readme.md in the repo) should also contain the following: +To correctly load the csv file, I used to pandas library and I put the data I needed in a dictionary. -- Description of the Technical achievements you attempted with this visualization. - - Some ideas include interaction, such as mousing over to see more detail about the point selected. -- Description of the Design achievements you attempted with this visualization. - - Some ideas include consistent color choice, font choice, element size (e.g. the size of the circles). +I mostly used this website (https://www.geeksforgeeks.org/python-altair-scatter-plot/) and https://altair-viz.github.io/getting_started/starting.html to visualize the data. I also relied on the official documentation to figure out the scaling of the circles and to debug. -GitHub Details ---- +![altair](img/altair-python.svg) -- Fork the GitHub Repository. You now have a copy associated with your username. -- Make changes to fulfill the project requirements. -- To submit, make a [Pull Request](https://help.github.com/articles/using-pull-requests/) on the original repository. +# Python + Matplotlib + pandas +Like with Altair, I put the data that was needed in a dictionary for easier use. I ran into some difficulties getting everything set up but once i got it to work it was pretty simple. However, I did run into problems trying to implement the colors (which I eventually figured out and helped me implement it in js). It seemes like Altair is the fancy way of doing visualizations but Matplotlib seems like it has the most resources out there for Python -Grading ---- +I used this website (https://pythonspot.com/matplotlib-scatterplot/) and https://kanoki.org/2020/08/30/matplotlib-scatter-plot-color-by-category-in-python/ and https://matplotlib.org/3.1.0/api/_as_gen/matplotlib.pyplot.scatter.html -Grades on a 120 point scale. -24 points will be based on your Technical and Design achievements, as explained in your readme. +![matplotlib](img/python-matplotlib.png) -Make sure you include the files necessary to reproduce your plots. -You should structure these in folders if helpful. -We will choose some at random to run and test. +# d3.js +This is the graph that was made using d3.js. I used the D3.js documentation to create it. Having worked on this after having worked on it in Python, I am starting to appreciate some of the features that JavaScript has that Python does not. Getting the colors to work was a bit tricky but I got it to work because of the work that I did with Python. -**NOTE: THE BELOW IS A SAMPLE ENTRY TO GET YOU STARTED ON YOUR README. YOU MAY DELETE THE ABOVE.** +I used this website (https://www.d3-graph-gallery.com/graph/scatter_basic.html) -# R + ggplot2 + R Markdown +![d3](img/d3-js-pic.png) -R is a language primarily focused on statistical computing. -ggplot2 is a popular library for charting in R. -R Markdown is a document format that compiles to HTML or PDF and allows you to include the output of R code directly in the document. +# Google Sheets + d3 +I decided to explore how this would be done with Google Sheets instead of Excel. However, I quickly realized that you can't add transparency to colors in google sheets charts and you also can't change the radius of the circles. Which looks like this: -To visualized the cars dataset, I made use of ggplot2's `geom_point()` layer, with aesthetics functions for the color and size. +![google](img/chart-google.png) -While it takes time to find the correct documentation, these functions made the effort creating this chart minimal. +However, I did find that Google has documentation to create the charts with JavaScript (https://developers.google.com/chart/interactive/docs/gallery/bubblechart#javascript)! It was pretty cool and I am glad that I looked into it. It was fairly simple to add things to the graph, but I can see how it can get very difficult to do specific things to the graphs. It wasn't too bad to recreate the chart, but I can see how it can get confusing real quick if you want to create your own. -![ggplot2](img/ggplot2.png) +![google-upgrade](img/google.gif) -# d3... +# Tableau +It was suprisingly easy to make this graph with Tableau. Here's a screenshot of the settings I used and the graph I created: +![tableau](img/tableau.png) -(And so on...) +![tableau](img/tableau-2.png) +# Flourish +Flourish was also really easy to use! I can see how customizing parts of it might be more challenging though. +![flourish](img/flourish.png) ## Technical Achievements -- **Proved P=NP**: Using a combination of... -- **Solved AI Forever**: ... +- **Google Charts**: Used the Google Graph Documentation to create the chart to allow for the customization +- **Adding Interactivity**: When you hover over the google graph, you can see the specific attributes of the plot ### Design Achievements -- **Re-vamped Apple's Design Philosophy**: As demonstrated in my colorscheme... +- Trying my best to maintain the same color scheme in all of the graphs (except for the Google Graph update with JS) :) diff --git a/__pycache__/altair.cpython-39.pyc b/__pycache__/altair.cpython-39.pyc new file mode 100644 index 00000000..de26ac4e Binary files /dev/null and b/__pycache__/altair.cpython-39.pyc differ diff --git a/cars-sample.csv b/d3js/cars-sample.csv similarity index 100% rename from cars-sample.csv rename to d3js/cars-sample.csv diff --git a/d3js/chart2.html b/d3js/chart2.html new file mode 100644 index 00000000..6ca2e2c9 --- /dev/null +++ b/d3js/chart2.html @@ -0,0 +1,12 @@ + + + + + + + + +
+ + + \ No newline at end of file diff --git a/d3js/d3-viz.js b/d3js/d3-viz.js new file mode 100644 index 00000000..e46bbe2b --- /dev/null +++ b/d3js/d3-viz.js @@ -0,0 +1,58 @@ +margin = {top: 10, right: 30, bottom: 30, left: 60}, + width = 460 - margin.left - margin.right, + height = 400 - margin.top - margin.bottom; + +var svg = d3.select("#dataviz") + .append("svg") + .attr("width", 5000) + .attr("height", 5000) + .append("g") + .attr("transform", + "translate(" + margin.left + "," + margin.top + ")"); + +d3.csv("cars-sample.csv").then(function(data){ + + var colors = {"bmw":"lightcoral","ford":"olive","honda":"green","mercedes":"cornflowerblue","toyota":"fuchsia"} + + console.log(data) + // Add X axis + var x = d3.scaleLinear() + .domain([1500, 5000]) + .range([ 0, width ]); + svg.append("g") + .attr("transform", "translate(0," + height + ")") + .call(d3.axisBottom(x)); + + // Add Y axis + var y = d3.scaleLinear() + .domain([8, 48]) + .range([ height, 0]); + svg.append("g") + .call(d3.axisLeft(y)); + + // Add dots + svg.append('g') + .selectAll("dot") + .data(data) + .enter() + .append("circle") + .attr("cx", function (d) { return x(d.Weight); } ) + .attr("cy", function (d) { return y(d.MPG); } ) + .attr("r", function (d) { return d.Weight/700; } ) + .attr("opacity", "0.5" ) + .style("fill", function (d) { return colors[d.Manufacturer]; }) + + }) + + svg.append("text") + .attr("x", 200) + .attr("y", 400) + .style("text-anchor", "middle") + .text("Weight"); + + svg.append("text") + .attr("transform", "rotate(-90)") + .attr("x", -180) + .attr("y", -30) + .style("text-anchor", "middle") + .text("MPG"); \ No newline at end of file diff --git a/google-sheets/cars-sample.csv b/google-sheets/cars-sample.csv new file mode 100644 index 00000000..94b0c87b --- /dev/null +++ b/google-sheets/cars-sample.csv @@ -0,0 +1,98 @@ +"","Car","Manufacturer","MPG","Cylinders","Displacement","Horsepower","Weight","Acceleration","Model.Year","Origin" +"5","torino","ford",17,8,302,140,3449,10.5,70,"American" +"6","galaxie 500","ford",15,8,429,198,4341,10,70,"American" +"13","torino (sw)","ford",NA,8,351,153,4034,11,70,"American" +"18","mustang boss 302","ford",NA,8,302,140,3353,8,70,"American" +"21","corona mark ii","toyota",24,4,113,95,2372,15,70,"Japanese" +"24","maverick","ford",21,6,200,85,2587,16,70,"American" +"30","2002","bmw",26,4,121,113,2234,12.5,70,"European" +"32","f250","ford",10,8,360,215,4615,14,70,"American" +"38","corona","toyota",25,4,113,95,2228,14,71,"Japanese" +"39","pinto","ford",25,4,98,NA,2046,19,71,"American" +"44","torino 500","ford",19,6,250,88,3302,15.5,71,"American" +"48","galaxie 500","ford",14,8,351,153,4154,13.5,71,"American" +"51","country squire (sw)","ford",13,8,400,170,4746,12,71,"American" +"56","mustang","ford",18,6,250,88,3139,14.5,71,"American" +"61","corolla 1200","toyota",31,4,71,65,1773,19,71,"Japanese" +"65","corona hardtop","toyota",24,4,113,95,2278,15.5,72,"Japanese" +"69","pinto runabout","ford",21,4,122,86,2226,16.5,72,"American" +"73","galaxie 500","ford",14,8,351,153,4129,13,72,"American" +"82","gran torino (sw)","ford",13,8,302,140,4294,16,72,"American" +"88","pinto (sw)","ford",22,4,122,86,2395,16,72,"American" +"90","corona mark ii (sw)","toyota",23,4,120,97,2506,14.5,72,"Japanese" +"92","corolla 1600 (sw)","toyota",27,4,97,88,2100,16.5,72,"Japanese" +"96","gran torino","ford",14,8,302,137,4042,14.5,73,"American" +"100","ltd","ford",13,8,351,158,4363,13,73,"American" +"108","maverick","ford",18,6,250,88,3021,16.5,73,"American" +"112","country","ford",12,8,400,167,4906,12.5,73,"American" +"116","carina","toyota",20,4,97,88,2279,19,73,"Japanese" +"120","pinto","ford",19,4,122,85,2310,18.5,73,"American" +"131","mark ii","toyota",20,6,156,122,2807,13.5,73,"Japanese" +"134","maverick","ford",21,6,200,NA,2875,17,74,"American" +"138","pinto","ford",26,4,122,80,2451,16.5,74,"American" +"139","corolla 1200","toyota",32,4,71,65,1836,21,74,"Japanese" +"144","gran torino","ford",16,8,302,140,4141,14,74,"American" +"147","gran torino (sw)","ford",14,8,302,140,4638,16,74,"American" +"152","corona","toyota",31,4,76,52,1649,16.5,74,"Japanese" +"157","civic","honda",24,4,120,97,2489,15,74,"Japanese" +"163","maverick","ford",15,6,250,72,3158,19.5,75,"American" +"167","ltd","ford",14,8,351,148,4657,13.5,75,"American" +"174","mustang ii","ford",13,8,302,129,3169,12,75,"American" +"175","corolla","toyota",29,4,97,75,2171,16,75,"Japanese" +"176","pinto","ford",23,4,140,83,2639,17,75,"American" +"179","corona","toyota",24,4,134,96,2702,13.5,75,"Japanese" +"182","pinto","ford",18,6,171,97,2984,14.5,75,"American" +"189","civic cvcc","honda",33,4,91,53,1795,17.5,75,"Japanese" +"198","gran torino","ford",14.5,8,351,152,4215,12.8,76,"American" +"201","maverick","ford",24,6,200,81,3012,17.6,76,"American" +"206","civic","honda",33,4,91,53,1795,17.4,76,"Japanese" +"208","granada ghia","ford",18,6,250,78,3574,21,76,"American" +"213","corolla","toyota",28,4,97,75,2155,16.4,76,"Japanese" +"214","pinto","ford",26.5,4,140,72,2565,13.6,76,"American" +"218","mark ii","toyota",19,6,156,108,2930,15.5,76,"Japanese" +"219","280s","mercedes",16.5,6,168,120,3820,16.7,76,"European" +"222","f108","ford",13,8,302,130,3870,15,76,"American" +"224","accord cvcc","honda",31.5,4,98,68,2045,18.5,77,"Japanese" +"236","granada","ford",18.5,6,250,98,3525,19,77,"American" +"240","thunderbird","ford",16,8,351,149,4335,14.5,77,"American" +"243","corolla liftback","toyota",26,4,97,75,2265,18.2,77,"Japanese" +"244","mustang ii 2+2","ford",25.5,4,140,89,2755,15.8,77,"American" +"250","320i","bmw",21.5,4,121,110,2600,12.8,77,"European" +"253","fiesta","ford",36.1,4,98,66,1800,14.4,78,"American" +"256","civic cvcc","honda",36.1,4,91,60,1800,16.4,78,"Japanese" +"262","fairmont (auto)","ford",20.2,6,200,85,2965,15.8,78,"American" +"263","fairmont (man)","ford",25.1,4,140,88,2720,15.4,78,"American" +"272","futura","ford",18.1,8,302,139,3205,11.2,78,"American" +"275","corona","toyota",27.5,4,134,95,2560,14.2,78,"Japanese" +"278","celica gt liftback","toyota",21.1,4,134,95,2515,14.8,78,"Japanese" +"287","accord lx","honda",29.5,4,98,68,2135,16.6,78,"Japanese" +"290","fairmont 4","ford",22.3,4,140,88,2890,17.3,79,"American" +"294","ltd landau","ford",17.6,8,302,129,3725,13.4,79,"American" +"298","country squire (sw)","ford",15.5,8,351,142,4054,14.3,79,"American" +"305","300d","mercedes",25.4,5,183,77,3530,20.1,79,"European" +"318","corolla tercel","toyota",38.1,4,89,60,1968,18.8,80,"Japanese" +"322","fairmont","ford",26.4,4,140,88,2870,18.1,80,"American" +"326","corona liftback","toyota",29.8,4,134,90,2711,15.5,80,"Japanese" +"329","corolla","toyota",32.2,4,108,75,2265,15.2,80,"Japanese" +"336","240d","mercedes",30,4,146,67,3250,21.8,80,"European" +"337","civic 1500 gl","honda",44.6,4,91,67,1850,13.8,80,"Japanese" +"344","mustang cobra","ford",23.6,4,140,NA,2905,14.3,80,"American" +"345","accord","honda",32.4,4,107,72,2290,17,80,"Japanese" +"351","starlet","toyota",39.1,4,79,58,1755,16.9,81,"Japanese" +"353","civic 1300","honda",35.1,4,81,60,1760,16.1,81,"Japanese" +"356","tercel","toyota",37.7,4,89,62,2050,17.3,81,"Japanese" +"359","escort 4w","ford",34.4,4,98,65,2045,16.2,81,"American" +"360","escort 2h","ford",29.9,4,98,65,2380,20.7,81,"American" +"363","prelude","honda",33.7,4,107,75,2210,14.4,81,"Japanese" +"364","corolla","toyota",32.4,4,108,75,2350,16.8,81,"Japanese" +"370","cressida","toyota",25.4,6,168,116,2900,12.6,81,"Japanese" +"374","granada gl","ford",20.2,6,200,88,3060,17.1,81,"American" +"382","fairmont futura","ford",24,4,140,92,2865,16.4,82,"American" +"390","accord","honda",36,4,107,75,2205,14.5,82,"Japanese" +"391","corolla","toyota",34,4,108,70,2245,16.9,82,"Japanese" +"392","civic","honda",38,4,91,67,1965,15,82,"Japanese" +"393","civic (auto)","honda",32,4,91,67,1965,15.7,82,"Japanese" +"398","granada l","ford",22,6,232,112,2835,14.7,82,"American" +"399","celica gt","toyota",32,4,144,96,2665,13.9,82,"Japanese" +"402","mustang gl","ford",27,4,140,86,2790,15.6,82,"American" +"405","ranger","ford",28,4,120,79,2625,18.6,82,"American" diff --git a/google-sheets/google.html b/google-sheets/google.html new file mode 100644 index 00000000..df9b5d26 --- /dev/null +++ b/google-sheets/google.html @@ -0,0 +1,47 @@ + + + + + + + +
+ + diff --git a/img/.DS_Store b/img/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/img/.DS_Store differ diff --git a/img/altair-python.svg b/img/altair-python.svg new file mode 100644 index 00000000..4095202c --- /dev/null +++ b/img/altair-python.svg @@ -0,0 +1 @@ +1,5002,0002,5003,0003,5004,0004,5005,000Weight051015202530354045MPGbmwfordhondamercedestoyotaManufacturer16491755176017731795180018361850196519682045204620502100213521552171220522102226222822342245226522782279229023102350…61 entriesWeight \ No newline at end of file diff --git a/img/chart-google.png b/img/chart-google.png new file mode 100644 index 00000000..6f7301dd Binary files /dev/null and b/img/chart-google.png differ diff --git a/img/d3-js-pic.png b/img/d3-js-pic.png new file mode 100644 index 00000000..3a746577 Binary files /dev/null and b/img/d3-js-pic.png differ diff --git a/img/flourish.png b/img/flourish.png new file mode 100644 index 00000000..131d2710 Binary files /dev/null and b/img/flourish.png differ diff --git a/img/google.gif b/img/google.gif new file mode 100644 index 00000000..8724bd27 Binary files /dev/null and b/img/google.gif differ diff --git a/img/python-matplotlib.png b/img/python-matplotlib.png new file mode 100644 index 00000000..e9c55aec Binary files /dev/null and b/img/python-matplotlib.png differ diff --git a/img/rchart.png b/img/rchart.png new file mode 100644 index 00000000..d4db3826 Binary files /dev/null and b/img/rchart.png differ diff --git a/img/tableau-2.png b/img/tableau-2.png new file mode 100644 index 00000000..1a4f16c8 Binary files /dev/null and b/img/tableau-2.png differ diff --git a/img/tableau.png b/img/tableau.png new file mode 100644 index 00000000..a4a706d0 Binary files /dev/null and b/img/tableau.png differ diff --git a/python/altair-vis.py b/python/altair-vis.py new file mode 100644 index 00000000..af894c74 --- /dev/null +++ b/python/altair-vis.py @@ -0,0 +1,18 @@ +import pandas +import altair as alt + +alt.renderers.enable('mimetype') + + +data = pandas.read_csv('cars-sample.csv') +xdata = data['Weight'] +ydata = data['MPG'] +manufacturers=data['Manufacturer'] +colors = ["lightcoral","olive","green","cornflowerblue","fuchsia"] +man_types = ["bmw","ford","honda","mercedes","toyota"] + +dictionary = pandas.DataFrame(dict(Weight=xdata,MPG=ydata,Manufacturer = manufacturers)) + +chart = alt.Chart(dictionary).mark_circle(opacity=0.5).encode(x=alt.X('Weight', scale=alt.Scale(domain=(1500, 5000))),y='MPG', size = 'Weight:N',color= alt.Color('Manufacturer', scale=alt.Scale(domain=man_types, range=colors))) + +chart.save('altair.html') diff --git a/python/altair.html b/python/altair.html new file mode 100644 index 00000000..092f3a0d --- /dev/null +++ b/python/altair.html @@ -0,0 +1,35 @@ + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/python/cars-sample.csv b/python/cars-sample.csv new file mode 100644 index 00000000..94b0c87b --- /dev/null +++ b/python/cars-sample.csv @@ -0,0 +1,98 @@ +"","Car","Manufacturer","MPG","Cylinders","Displacement","Horsepower","Weight","Acceleration","Model.Year","Origin" +"5","torino","ford",17,8,302,140,3449,10.5,70,"American" +"6","galaxie 500","ford",15,8,429,198,4341,10,70,"American" +"13","torino (sw)","ford",NA,8,351,153,4034,11,70,"American" +"18","mustang boss 302","ford",NA,8,302,140,3353,8,70,"American" +"21","corona mark ii","toyota",24,4,113,95,2372,15,70,"Japanese" +"24","maverick","ford",21,6,200,85,2587,16,70,"American" +"30","2002","bmw",26,4,121,113,2234,12.5,70,"European" +"32","f250","ford",10,8,360,215,4615,14,70,"American" +"38","corona","toyota",25,4,113,95,2228,14,71,"Japanese" +"39","pinto","ford",25,4,98,NA,2046,19,71,"American" +"44","torino 500","ford",19,6,250,88,3302,15.5,71,"American" +"48","galaxie 500","ford",14,8,351,153,4154,13.5,71,"American" +"51","country squire (sw)","ford",13,8,400,170,4746,12,71,"American" +"56","mustang","ford",18,6,250,88,3139,14.5,71,"American" +"61","corolla 1200","toyota",31,4,71,65,1773,19,71,"Japanese" +"65","corona hardtop","toyota",24,4,113,95,2278,15.5,72,"Japanese" +"69","pinto runabout","ford",21,4,122,86,2226,16.5,72,"American" +"73","galaxie 500","ford",14,8,351,153,4129,13,72,"American" +"82","gran torino (sw)","ford",13,8,302,140,4294,16,72,"American" +"88","pinto (sw)","ford",22,4,122,86,2395,16,72,"American" +"90","corona mark ii (sw)","toyota",23,4,120,97,2506,14.5,72,"Japanese" +"92","corolla 1600 (sw)","toyota",27,4,97,88,2100,16.5,72,"Japanese" +"96","gran torino","ford",14,8,302,137,4042,14.5,73,"American" +"100","ltd","ford",13,8,351,158,4363,13,73,"American" +"108","maverick","ford",18,6,250,88,3021,16.5,73,"American" +"112","country","ford",12,8,400,167,4906,12.5,73,"American" +"116","carina","toyota",20,4,97,88,2279,19,73,"Japanese" +"120","pinto","ford",19,4,122,85,2310,18.5,73,"American" +"131","mark ii","toyota",20,6,156,122,2807,13.5,73,"Japanese" +"134","maverick","ford",21,6,200,NA,2875,17,74,"American" +"138","pinto","ford",26,4,122,80,2451,16.5,74,"American" +"139","corolla 1200","toyota",32,4,71,65,1836,21,74,"Japanese" +"144","gran torino","ford",16,8,302,140,4141,14,74,"American" +"147","gran torino (sw)","ford",14,8,302,140,4638,16,74,"American" +"152","corona","toyota",31,4,76,52,1649,16.5,74,"Japanese" +"157","civic","honda",24,4,120,97,2489,15,74,"Japanese" +"163","maverick","ford",15,6,250,72,3158,19.5,75,"American" +"167","ltd","ford",14,8,351,148,4657,13.5,75,"American" +"174","mustang ii","ford",13,8,302,129,3169,12,75,"American" +"175","corolla","toyota",29,4,97,75,2171,16,75,"Japanese" +"176","pinto","ford",23,4,140,83,2639,17,75,"American" +"179","corona","toyota",24,4,134,96,2702,13.5,75,"Japanese" +"182","pinto","ford",18,6,171,97,2984,14.5,75,"American" +"189","civic cvcc","honda",33,4,91,53,1795,17.5,75,"Japanese" +"198","gran torino","ford",14.5,8,351,152,4215,12.8,76,"American" +"201","maverick","ford",24,6,200,81,3012,17.6,76,"American" +"206","civic","honda",33,4,91,53,1795,17.4,76,"Japanese" +"208","granada ghia","ford",18,6,250,78,3574,21,76,"American" +"213","corolla","toyota",28,4,97,75,2155,16.4,76,"Japanese" +"214","pinto","ford",26.5,4,140,72,2565,13.6,76,"American" +"218","mark ii","toyota",19,6,156,108,2930,15.5,76,"Japanese" +"219","280s","mercedes",16.5,6,168,120,3820,16.7,76,"European" +"222","f108","ford",13,8,302,130,3870,15,76,"American" +"224","accord cvcc","honda",31.5,4,98,68,2045,18.5,77,"Japanese" +"236","granada","ford",18.5,6,250,98,3525,19,77,"American" +"240","thunderbird","ford",16,8,351,149,4335,14.5,77,"American" +"243","corolla liftback","toyota",26,4,97,75,2265,18.2,77,"Japanese" +"244","mustang ii 2+2","ford",25.5,4,140,89,2755,15.8,77,"American" +"250","320i","bmw",21.5,4,121,110,2600,12.8,77,"European" +"253","fiesta","ford",36.1,4,98,66,1800,14.4,78,"American" +"256","civic cvcc","honda",36.1,4,91,60,1800,16.4,78,"Japanese" +"262","fairmont (auto)","ford",20.2,6,200,85,2965,15.8,78,"American" +"263","fairmont (man)","ford",25.1,4,140,88,2720,15.4,78,"American" +"272","futura","ford",18.1,8,302,139,3205,11.2,78,"American" +"275","corona","toyota",27.5,4,134,95,2560,14.2,78,"Japanese" +"278","celica gt liftback","toyota",21.1,4,134,95,2515,14.8,78,"Japanese" +"287","accord lx","honda",29.5,4,98,68,2135,16.6,78,"Japanese" +"290","fairmont 4","ford",22.3,4,140,88,2890,17.3,79,"American" +"294","ltd landau","ford",17.6,8,302,129,3725,13.4,79,"American" +"298","country squire (sw)","ford",15.5,8,351,142,4054,14.3,79,"American" +"305","300d","mercedes",25.4,5,183,77,3530,20.1,79,"European" +"318","corolla tercel","toyota",38.1,4,89,60,1968,18.8,80,"Japanese" +"322","fairmont","ford",26.4,4,140,88,2870,18.1,80,"American" +"326","corona liftback","toyota",29.8,4,134,90,2711,15.5,80,"Japanese" +"329","corolla","toyota",32.2,4,108,75,2265,15.2,80,"Japanese" +"336","240d","mercedes",30,4,146,67,3250,21.8,80,"European" +"337","civic 1500 gl","honda",44.6,4,91,67,1850,13.8,80,"Japanese" +"344","mustang cobra","ford",23.6,4,140,NA,2905,14.3,80,"American" +"345","accord","honda",32.4,4,107,72,2290,17,80,"Japanese" +"351","starlet","toyota",39.1,4,79,58,1755,16.9,81,"Japanese" +"353","civic 1300","honda",35.1,4,81,60,1760,16.1,81,"Japanese" +"356","tercel","toyota",37.7,4,89,62,2050,17.3,81,"Japanese" +"359","escort 4w","ford",34.4,4,98,65,2045,16.2,81,"American" +"360","escort 2h","ford",29.9,4,98,65,2380,20.7,81,"American" +"363","prelude","honda",33.7,4,107,75,2210,14.4,81,"Japanese" +"364","corolla","toyota",32.4,4,108,75,2350,16.8,81,"Japanese" +"370","cressida","toyota",25.4,6,168,116,2900,12.6,81,"Japanese" +"374","granada gl","ford",20.2,6,200,88,3060,17.1,81,"American" +"382","fairmont futura","ford",24,4,140,92,2865,16.4,82,"American" +"390","accord","honda",36,4,107,75,2205,14.5,82,"Japanese" +"391","corolla","toyota",34,4,108,70,2245,16.9,82,"Japanese" +"392","civic","honda",38,4,91,67,1965,15,82,"Japanese" +"393","civic (auto)","honda",32,4,91,67,1965,15.7,82,"Japanese" +"398","granada l","ford",22,6,232,112,2835,14.7,82,"American" +"399","celica gt","toyota",32,4,144,96,2665,13.9,82,"Japanese" +"402","mustang gl","ford",27,4,140,86,2790,15.6,82,"American" +"405","ranger","ford",28,4,120,79,2625,18.6,82,"American" diff --git a/python/using-python.py b/python/using-python.py new file mode 100644 index 00000000..7a8287aa --- /dev/null +++ b/python/using-python.py @@ -0,0 +1,21 @@ +import matplotlib.pyplot as plt +import matplotlib.colors +import pandas as pandas + +data = pandas.read_csv('cars-sample.csv') +x = data['Weight'] +y = data['MPG'] +manufacturers=data['Manufacturer'] + +colors = {"bmw":"lightcoral","ford":"tab:green","honda":"green","mercedes":"cornflowerblue","toyota":"tab:pink"} +dictionary = pandas.DataFrame(dict(x=x,y=y,manufacturers = manufacturers)) + +fig, ax = plt.subplots() + +ax.scatter(dictionary['x'],dictionary['y'],c=dictionary['manufacturers'].map(colors),s = dictionary['x']/15,alpha=0.5) +plt.xlabel('Weight') +plt.ylabel('MPG') +plt.show() + + + diff --git a/r/Rplots.pdf b/r/Rplots.pdf new file mode 100644 index 00000000..115d78c9 Binary files /dev/null and b/r/Rplots.pdf differ diff --git a/r/cars-sample.csv b/r/cars-sample.csv new file mode 100644 index 00000000..94b0c87b --- /dev/null +++ b/r/cars-sample.csv @@ -0,0 +1,98 @@ +"","Car","Manufacturer","MPG","Cylinders","Displacement","Horsepower","Weight","Acceleration","Model.Year","Origin" +"5","torino","ford",17,8,302,140,3449,10.5,70,"American" +"6","galaxie 500","ford",15,8,429,198,4341,10,70,"American" +"13","torino (sw)","ford",NA,8,351,153,4034,11,70,"American" +"18","mustang boss 302","ford",NA,8,302,140,3353,8,70,"American" +"21","corona mark ii","toyota",24,4,113,95,2372,15,70,"Japanese" +"24","maverick","ford",21,6,200,85,2587,16,70,"American" +"30","2002","bmw",26,4,121,113,2234,12.5,70,"European" +"32","f250","ford",10,8,360,215,4615,14,70,"American" +"38","corona","toyota",25,4,113,95,2228,14,71,"Japanese" +"39","pinto","ford",25,4,98,NA,2046,19,71,"American" +"44","torino 500","ford",19,6,250,88,3302,15.5,71,"American" +"48","galaxie 500","ford",14,8,351,153,4154,13.5,71,"American" +"51","country squire (sw)","ford",13,8,400,170,4746,12,71,"American" +"56","mustang","ford",18,6,250,88,3139,14.5,71,"American" +"61","corolla 1200","toyota",31,4,71,65,1773,19,71,"Japanese" +"65","corona hardtop","toyota",24,4,113,95,2278,15.5,72,"Japanese" +"69","pinto runabout","ford",21,4,122,86,2226,16.5,72,"American" +"73","galaxie 500","ford",14,8,351,153,4129,13,72,"American" +"82","gran torino (sw)","ford",13,8,302,140,4294,16,72,"American" +"88","pinto (sw)","ford",22,4,122,86,2395,16,72,"American" +"90","corona mark ii (sw)","toyota",23,4,120,97,2506,14.5,72,"Japanese" +"92","corolla 1600 (sw)","toyota",27,4,97,88,2100,16.5,72,"Japanese" +"96","gran torino","ford",14,8,302,137,4042,14.5,73,"American" +"100","ltd","ford",13,8,351,158,4363,13,73,"American" +"108","maverick","ford",18,6,250,88,3021,16.5,73,"American" +"112","country","ford",12,8,400,167,4906,12.5,73,"American" +"116","carina","toyota",20,4,97,88,2279,19,73,"Japanese" +"120","pinto","ford",19,4,122,85,2310,18.5,73,"American" +"131","mark ii","toyota",20,6,156,122,2807,13.5,73,"Japanese" +"134","maverick","ford",21,6,200,NA,2875,17,74,"American" +"138","pinto","ford",26,4,122,80,2451,16.5,74,"American" +"139","corolla 1200","toyota",32,4,71,65,1836,21,74,"Japanese" +"144","gran torino","ford",16,8,302,140,4141,14,74,"American" +"147","gran torino (sw)","ford",14,8,302,140,4638,16,74,"American" +"152","corona","toyota",31,4,76,52,1649,16.5,74,"Japanese" +"157","civic","honda",24,4,120,97,2489,15,74,"Japanese" +"163","maverick","ford",15,6,250,72,3158,19.5,75,"American" +"167","ltd","ford",14,8,351,148,4657,13.5,75,"American" +"174","mustang ii","ford",13,8,302,129,3169,12,75,"American" +"175","corolla","toyota",29,4,97,75,2171,16,75,"Japanese" +"176","pinto","ford",23,4,140,83,2639,17,75,"American" +"179","corona","toyota",24,4,134,96,2702,13.5,75,"Japanese" +"182","pinto","ford",18,6,171,97,2984,14.5,75,"American" +"189","civic cvcc","honda",33,4,91,53,1795,17.5,75,"Japanese" +"198","gran torino","ford",14.5,8,351,152,4215,12.8,76,"American" +"201","maverick","ford",24,6,200,81,3012,17.6,76,"American" +"206","civic","honda",33,4,91,53,1795,17.4,76,"Japanese" +"208","granada ghia","ford",18,6,250,78,3574,21,76,"American" +"213","corolla","toyota",28,4,97,75,2155,16.4,76,"Japanese" +"214","pinto","ford",26.5,4,140,72,2565,13.6,76,"American" +"218","mark ii","toyota",19,6,156,108,2930,15.5,76,"Japanese" +"219","280s","mercedes",16.5,6,168,120,3820,16.7,76,"European" +"222","f108","ford",13,8,302,130,3870,15,76,"American" +"224","accord cvcc","honda",31.5,4,98,68,2045,18.5,77,"Japanese" +"236","granada","ford",18.5,6,250,98,3525,19,77,"American" +"240","thunderbird","ford",16,8,351,149,4335,14.5,77,"American" +"243","corolla liftback","toyota",26,4,97,75,2265,18.2,77,"Japanese" +"244","mustang ii 2+2","ford",25.5,4,140,89,2755,15.8,77,"American" +"250","320i","bmw",21.5,4,121,110,2600,12.8,77,"European" +"253","fiesta","ford",36.1,4,98,66,1800,14.4,78,"American" +"256","civic cvcc","honda",36.1,4,91,60,1800,16.4,78,"Japanese" +"262","fairmont (auto)","ford",20.2,6,200,85,2965,15.8,78,"American" +"263","fairmont (man)","ford",25.1,4,140,88,2720,15.4,78,"American" +"272","futura","ford",18.1,8,302,139,3205,11.2,78,"American" +"275","corona","toyota",27.5,4,134,95,2560,14.2,78,"Japanese" +"278","celica gt liftback","toyota",21.1,4,134,95,2515,14.8,78,"Japanese" +"287","accord lx","honda",29.5,4,98,68,2135,16.6,78,"Japanese" +"290","fairmont 4","ford",22.3,4,140,88,2890,17.3,79,"American" +"294","ltd landau","ford",17.6,8,302,129,3725,13.4,79,"American" +"298","country squire (sw)","ford",15.5,8,351,142,4054,14.3,79,"American" +"305","300d","mercedes",25.4,5,183,77,3530,20.1,79,"European" +"318","corolla tercel","toyota",38.1,4,89,60,1968,18.8,80,"Japanese" +"322","fairmont","ford",26.4,4,140,88,2870,18.1,80,"American" +"326","corona liftback","toyota",29.8,4,134,90,2711,15.5,80,"Japanese" +"329","corolla","toyota",32.2,4,108,75,2265,15.2,80,"Japanese" +"336","240d","mercedes",30,4,146,67,3250,21.8,80,"European" +"337","civic 1500 gl","honda",44.6,4,91,67,1850,13.8,80,"Japanese" +"344","mustang cobra","ford",23.6,4,140,NA,2905,14.3,80,"American" +"345","accord","honda",32.4,4,107,72,2290,17,80,"Japanese" +"351","starlet","toyota",39.1,4,79,58,1755,16.9,81,"Japanese" +"353","civic 1300","honda",35.1,4,81,60,1760,16.1,81,"Japanese" +"356","tercel","toyota",37.7,4,89,62,2050,17.3,81,"Japanese" +"359","escort 4w","ford",34.4,4,98,65,2045,16.2,81,"American" +"360","escort 2h","ford",29.9,4,98,65,2380,20.7,81,"American" +"363","prelude","honda",33.7,4,107,75,2210,14.4,81,"Japanese" +"364","corolla","toyota",32.4,4,108,75,2350,16.8,81,"Japanese" +"370","cressida","toyota",25.4,6,168,116,2900,12.6,81,"Japanese" +"374","granada gl","ford",20.2,6,200,88,3060,17.1,81,"American" +"382","fairmont futura","ford",24,4,140,92,2865,16.4,82,"American" +"390","accord","honda",36,4,107,75,2205,14.5,82,"Japanese" +"391","corolla","toyota",34,4,108,70,2245,16.9,82,"Japanese" +"392","civic","honda",38,4,91,67,1965,15,82,"Japanese" +"393","civic (auto)","honda",32,4,91,67,1965,15.7,82,"Japanese" +"398","granada l","ford",22,6,232,112,2835,14.7,82,"American" +"399","celica gt","toyota",32,4,144,96,2665,13.9,82,"Japanese" +"402","mustang gl","ford",27,4,140,86,2790,15.6,82,"American" +"405","ranger","ford",28,4,120,79,2625,18.6,82,"American" diff --git a/r/usingr.r b/r/usingr.r new file mode 100644 index 00000000..89c51b96 --- /dev/null +++ b/r/usingr.r @@ -0,0 +1,9 @@ + +library(ggplot2) + +data <- read.csv("cars-sample.csv",header = TRUE, sep =",") + +ggplot(data, aes(x = Weight, y = MPG)) + geom_point(aes(colour = Manufacturer, size = Weight), alpha = 0.5) + + + diff --git a/tableau/tableau.twb b/tableau/tableau.twb new file mode 100644 index 00000000..a185de8d --- /dev/null +++ b/tableau/tableau.twb @@ -0,0 +1,944 @@ + + + + + + <_.fcp.MarkAnimation.true...MarkAnimation /> + <_.fcp.ObjectModelEncapsulateLegacy.true...ObjectModelEncapsulateLegacy /> + <_.fcp.ObjectModelTableType.true...ObjectModelTableType /> + <_.fcp.SchemaViewerObjectModel.true...SchemaViewerObjectModel /> + + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.false...relation connection='textscan.03sx4060wmte0216xt9y51ca5j1z' name='cars-sample.csv' table='[cars-sample#csv]' type='table'> + + + + + + + + + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...relation connection='textscan.03sx4060wmte0216xt9y51ca5j1z' name='cars-sample.csv' table='[cars-sample#csv]' type='table'> + + + + + + + + + + + + + + + + + + 0 + [cars-sample.csv] + + Count + true + + "UTF-8" + "en_US" + "," + "true" + "en_US" + "" + + + + F1 + 20 + [F1] + [cars-sample.csv] + F1 + 0 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Car + 129 + [Car] + [cars-sample.csv] + Car + 1 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Manufacturer + 129 + [Manufacturer] + [cars-sample.csv] + Manufacturer + 2 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + MPG + 5 + [MPG] + [cars-sample.csv] + MPG + 3 + real + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Cylinders + 20 + [Cylinders] + [cars-sample.csv] + Cylinders + 4 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Displacement + 20 + [Displacement] + [cars-sample.csv] + Displacement + 5 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Horsepower + 20 + [Horsepower] + [cars-sample.csv] + Horsepower + 6 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Weight + 20 + [Weight] + [cars-sample.csv] + Weight + 7 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Acceleration + 5 + [Acceleration] + [cars-sample.csv] + Acceleration + 8 + real + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Model.Year + 20 + [Model.Year] + [cars-sample.csv] + Model.Year + 9 + integer + Sum + true + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + Origin + 129 + [Origin] + [cars-sample.csv] + Origin + 10 + string + Count + 1 + 1073741823 + true + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-id>[cars-sample.csv_66667F882DCF4445AB048175BDC42495] + + + + + + + <_.fcp.ObjectModelTableType.true...column caption='cars-sample.csv' datatype='table' name='[__tableau_internal_object_id__].[cars-sample.csv_66667F882DCF4445AB048175BDC42495]' role='measure' type='quantitative' /> + + + + + + + <_.fcp.ObjectModelEncapsulateLegacy.true...object-graph> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [federated.0tbl3621jgp9xx10yjwg20lt281n].[none:MPG:qk] + [federated.0tbl3621jgp9xx10yjwg20lt281n].[none:Weight:qk] +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [federated.0tbl3621jgp9xx10yjwg20lt281n].[none:Manufacturer:nk] + + + + + + + + + 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 + BKwAAAAASUVORK5CYII= + + +