Learning d3.js Data Visualization - Second Edition - Ændrew Rininsland - E-Book

Learning d3.js Data Visualization - Second Edition E-Book

Ændrew Rininsland

0,0
34,79 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Inject new life into your data by creating compelling visualizations with d3.js

About This Book

  • Understand how to best represent your data by developing the right kind of visualization
  • Harness the power of D3 by building interactive and real-time data-driven web visualizations
  • This book will provide a strong foundation in designing compelling web visualizations with D3.js

Who This Book Is For

This book is for web developers, data scientists, and anyone interested in representing data through interactive visualizations on the web with D3. Some basic JavaScript knowledge is expected, but no prior experience with data visualization or D3 is required to follow this book.

What You Will Learn

  • Gain a solid understanding of the common D3 development idioms
  • Be able to input data, transform it, and output it as a visualization
  • Add simple effects and user interactions to a visualization
  • Find out how to write basic D3 code for server using Node.js
  • Automate testing visualizations using Mocha
  • Achieve fluency in ES2015, the most modern version of JavaScript

In Detail

D3 has emerged as one of the leading platforms to develop beautiful, interactive visualizations over the web. We begin by setting up a strong foundation, then build on this foundation book will take you through the entire world of reimagining data using interactive, animated visualizations created in D3.js.

In addition to covering the various features of D3.js to build a wide range of visualizations, we also focus on the entire process of representing data through visualizations so that developers and those interested in data visualization will get the entire process right.

We also include chapters that explore a wide range of visualizations through practical use cases. By the end of this book, you will have unlocked the mystery behind successful data visualizations and will be ready to use D3 to transform any data into a more engaging and sophisticated visualization.

Style and approach

This book has comprehensive explanation on how to leverage the power of D3.js to create powerful and creative visualizations through step by step instruction

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 300

Veröffentlichungsjahr: 2016

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Learning d3.js Data Visualization Second Edition
Credits
About the Authors
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Getting Started with D3, ES2016, and Node.js
What is D3.js?
What's ES2016?
Getting started with Node and Git on the command line
A quick Chrome Developer Tools primer
The obligatory bar chart example
Summary
2. A Primer on DOM, SVG, and CSS
DOM
Manipulating the DOM with D3
Selections
Let's make a table!
What exactly did we do here?
Selections example
Manipulating content
Joining data to selections
An HTML visualization example
Scalable Vector Graphics
Drawing with SVG
Manually adding elements and shapes
Text
Shapes
Transformations
Using paths
Line
Area
Arc
Symbol
Chord
Diagonal
Axes
CSS
Colors
Summary
3. Making Data Useful
Thinking about data functionally
Built-in array functions
Data functions of D3
Loading data
The core
Convenience functions
Scales
Ordinal scales
Quantitative scales
Continuous range scales
Discrete range scales
Time
Formatting
Time arithmetic
Geography
Getting geodata
Drawing geographically
Using geography as a base
Summary
4. Defining the User Experience – Animation and Interaction
Animation
Animation with transitions
Interpolators
Easing
Timers
Animation with CSS transitions
Interacting with the user
Basic interaction
Behaviors
Drag
Zoom
Brushes
Summary
5. Layouts – D3's Black Magic
What are layouts and why should you care?
Built-in layouts
The dataset
Normal layouts
Using the histogram layout
Baking a fresh 'n' delicious pie chart
Labeling your pie chart
Showing popularity through time with stack
Adding tooltips to our streamgraph
Highlighting connections with chord
Drawing with force
Hierarchical layouts
Drawing a tree
Showing clusters
Partitioning a pie
Packing it in
Subdividing with treemap
Summary
6. D3 on the Server with Node.js
Readying the environment
All aboard the Express train to Server Town!
Proximity detection and the Voronoi geom
Rendering in Canvas on the server
Deploying to Heroku
Summary
7. Designing Good Data Visualizations
Clarity, honesty, and sense of purpose
Helping your audience understand scale
Using color effectively
Understanding your audience (or "trying not to forget about mobile")
Some principles for designing for mobile and desktop
Columns are for desktops, rows are for mobile
Be sparing with animations on mobile
Realize similar UI elements react differently between platforms
Avoid "mystery meat" navigation
Be wary of the scroll
Summary
8. Having Confidence in Your Visualizations
Linting all the things
Static type checking with TypeScript and Flow
The new kid on the block – Facebook Flow
TypeScript – the current heavyweight champion
Behavior-driven development with Karma and Mocha Chai
Setting up your project with Mocha and Karma
Testing behaviors first – BDD with Mocha
Summary
Index

Learning d3.js Data Visualization Second Edition

Learning d3.js Data Visualization Second Edition

Copyright © 2016 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: October 2013

Second edition: April 2016

Production reference: 1220416

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78588-904-2

www.packtpub.com

Credits

Authors

Ændrew Rininsland

Swizec Teller

Reviewer

Elliot Bentley

Commissioning Editor

Wilson D'souza

Acquisition Editor

Smeet Thakkar

Content Development Editor

Onkar Wani

Technical Editor

Tanmayee Patil

Copy Editor

Vikrant Phadke

Project Coordinator

Bijal Patel

Proofreader

Safis Editing

Indexer

Monica Ajmera Mehta

Production Coordinator

Nilesh Mohite

Cover Work

Nilesh Mohite

About the Authors

Ændrew Rininsland is a developer and journalist who has spent much of the last half-decade building interactive content for newspapers such as The Times, Sunday Times, The Economist, and The Guardian. During his 3 years at The Times and Sunday Times, he worked on all kinds of editorial projects, ranging from obituaries of figures such as Nelson Mandela to high-profile data-driven investigations such as The Doping Scandal, the largest leak of sporting blood test data in history.

A prolific open source developer, Ændrew has released many kinds of projects, ranging from small utility libraries such as Doctop (which allow the creation of live-updating datasets using Google Docs) to big charting tools such as AxisJS. He is also a co-maintainer of C3.js, a widely used abstraction of D3 that greatly speeds up the creation of several basic chart types, and GitHub.js, a library that makes it easy to interact with the GitHub API.

You can follow him on Twitter at @aendrew and on GitHub at github.com/aendrew.

I'd like to thank my family for their continued encouragement, and also my partner Siyuan for being incredibly supportive while I worked on this, my first book.

I'd also like to thank (in no particular order) @marvin.richter on the Polymer Slack, snover on ##typescript, @arrayjam, @sebastian, @seemantk, everyone else on the D3.js Slack, and especially Elliot Bentley for his fantastic technical reviewing.

Swizec Teller author of Data Visualization with d3.js, is a geek with a hat. Founding his first startup at 21, he is now looking for the next big idea as a full-stack web generalist focusing on freelancing for early-stage startup companies.

When he isn't coding, he's usually blogging, writing books, or giving talks at various non-conference events in Slovenia and nearby countries. He is still looking for a chance to speak at a big international conference.

In November 2012, he started writing Why Programmers Work At Night, and set out on a quest to improve the lives of developers everywhere.

I want to thank @gandalfar and @robertbasic for egging me on while writing and being my guinea pigs for the examples. I also want to send love to everyone at @psywerx for keeping me sane and creating one of the best datasets ever.

About the Reviewer

Elliot Bentley is a graphics editor at thwe Wall Street Journal, where he works on interactive graphics and newsroom tools. He runs Journocoders, a meetup group in London for people who like journalism and code. In his free time, he works on oTranscribe, an open source web app for transcribing interviews.

www.PacktPub.com

eBooks, discount offers, and more

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Preface

Welcome to Learning d3.js Data Visualization, Second Edition. Over the course of this book, you'll learn the basics of one of the world's most ubiquitous and powerful data visualization libraries, but we won't stop there. By the end of our time together, you'll have all the skills you need to become a total D3 ninja, able to do everything from building visualizations from scratch to using it on the server and writing automated tests. As well, if you haven't leveled up your JavaScript skills for a while, you're in for a treat—this book endeavors to use the latest features that are currently being added to the language, all this while explaining why they're cool and how they differ from old-school JavaScript.

What this book covers

Chapter 1, Getting Started with D3, ES2016, and Node.js, updated and expanded in the second edition, gets you up and running with the latest tools for building data visualizations using D3.

Chapter 2, A Primer on DOM, SVG, and CSS, reviews the underlying web technologies that D3 can manipulate.

Chapter 3, Making Data Useful, teaches you how to transform data so that D3 can visualize it.

Chapter 4, Defining the User Experience – Animation and Interaction, updated and expanded in the second edition, is where you use animation and user interactivity to drive your data visualizations.

Chapter 5, Layouts — D3's Black Magic, updated and expanded in the second edition, teaches you how layouts can take your D3 skills to the next level by providing reusable patterns for creating complex charts.

Chapter 6, D3 on the Server with Node.js, new in the second edition, helps you build and deploy a Node.js-based web service that renders D3 using Canvas.

Chapter 7, Designing Good Data Visualizations, updated and expanded in the second edition, compares and contrasts differing approaches to data visualization while building a set of best practices.

Chapter 8, Having Confidence in Your Visualizations, new in the second edition, shows you how to improve the quality of your code by introducing linting, static type checking, and unit testing to your projects.

What you need for this book

You will need a machine that is capable of running Node.js. We will discuss how to install this in the first chapter. You can run it on pretty much anything, but having a few extra gigabytes of RAM available will probably help while developing. Some of the mapping examples later in the book are kind of CPU-intensive, though most machines produced since 2014 should be able to handle them.

You will also need the latest version of your favorite web browser; mine is Chrome, and I use it in the examples, but Firefox also works well. You can try to work in Safari, Internet Explorer/Edge, Opera, or any other browser, but I feel that Chrome's Developer Tools are the best.

Who this book is for

This book is for web developers, interactive news developers, data scientists, and anyone interested in representing data through interactive visualizations on the Web with D3. Some basic knowledge of JavaScript is expected, but no prior experience with data visualization or D3 is required to follow this book.

Conventions

In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "We can include other code using the require directive."

A block of code is set as follows:

d3.selectAll('.bars') .data(dataset) .enter() .append('rect')

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

d3.selectAll('.bars') .data(dataset) .enter() .append('rect')

Any command-line input or output is written as follows:

$ npm install d3 --save

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "The Resources tab is good for inspecting client-side data."

Note

Warnings or important notes appear in a box like this.

Tip

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

All the code for the book is hosted on GitHub. We talk about how to clone the repo and switch between branches (which are used to separate the code into chapters) in Chapter 1, Getting Started with D3, ES2016, and Node.js but you can take a look ahead of time by visiting https://github.com/aendrew/learning-d3.

Downloading the color images of this book

We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from https://www.packtpub.com/sites/default/files/downloads/Learningd3jsDataVisualizationSecond_Edition_ColorImages.pdf.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.

Chapter 1. Getting Started with D3, ES2016, and Node.js

In this chapter, we'll lay the foundations of what you'll need to run all the examples in the book. I'll explain how you can start writing ECMAScript 2016 (ES2016) today—which is the latest and most advanced version of JavaScript—and show you how to use Babel to transpile it to ES5, allowing your modern JavaScript to be run on any browser. We'll then cover the basics of using D3 to render a basic chart.

What is D3.js?

D3 (Data-Driven Documents), developed by Mike Bostock and the D3 community since 2011, is the successor to Bostock's earlier Protovis library. It allows pixel-perfect rendering of data by abstracting the calculation of things such as scales and axes into an easy-to-use domain-specific language (DSL), and uses idioms that should be immediately familiar to anyone with experience of using the massively popular jQuery JavaScript library. Much like jQuery, in D3, you operate on elements by selecting them and then manipulating via a chain of modifier functions. Especially within the context of data visualization, this declarative approach makes using it easier and more enjoyable than a lot of other tools out there. The official website, https://d3js.org/, features many great examples that show off the power of D3, but understanding them is tricky at best. After finishing this book, you should be able to understand D3 well enough to figure out the examples. If you want to follow the development of D3 more closely, check out the source code hosted on GitHub at https://github.com/mbostock/d3.

The fine-grained control and its elegance make D3 one of the most powerful open source visualization libraries out there. This also means that it's not very suitable for simple jobs such as drawing a line chart or two—in that case you might want to use a library designed for charting. Many use D3 internally anyway. For a massive list, visit https://github.com/sorrycc/awesome-javascript#data-visualization.

As a data manipulation library, D3 is based on the principles of functional programming, which is probably where a lot of confusion stems from. Unfortunately, functional programming goes beyond the scope of this book, but I'll explain all the relevant bits to make sure that everyone's on the same page.