## Hi! * https://hackmd.io/@story645/rkpjEbxN3 * grad student at GC studying viz * matplotlib community manager (contributor/maintainer since $\approx$ 2016) * on most of the socials: @story645 * email: haizenman@gmail.com --- # What do visualization libraries do? <!--provide components for converting data to graphics--> ![Flow chart where boxes are small and arrows are big and purple. Box 1 contains images of data containers: an array, data frame, and nested list. Arrow from 1 to 2. Box 2 has images of visual encodings: a light blue circle, black line, purple to yellow gradient, and blue and orange boxes. Arrow from 2 to 3. Box 3 has graphics: histogram, line plot, image, and 3D surface. Arrow going from 3 to 1.](https://i.imgur.com/o6Kspwe.png) ---- <!-- the artist object--> ![Same flow chart as above, arrows circled in blue. Circle is labeled Artist in same blue](https://i.imgur.com/jXWWOxE.png) --- # What problems are we trying to solve? $data \rightarrow graphic$ ---- # What problems are we trying to solve? $data \rightarrow graphic$ $data \leftarrow graphic$ --- How do we verify structure is preserved? $data \leftrightarrow graphic$ ---- # What is structure? ---- ## Topology + Fields [Bertin] ![](https://i.imgur.com/DXZPFkk.png) ---- ## Relations between elements [Mackinlay] ![](https://i.imgur.com/GubgyFg.png) --- # Abstract math to build better tools? :confused: --- ## Define and test structure preservation: * **Homemoporhism** bijective $g(f(x))=f(g(y)) = y, \;\forall x \in X, y \in Y$, continuous $\lim_{x\rightarrow c}f(x) = f(c)$, and has a continous inverse function $f^{-1}$. * **Homomorphism**: $f(x\circ y) = f(x) \circ f(y)$ * **Equivariance**: $f(act(g,x)) = act(g,f(x))$ --- ### Homeomorphism ![](https://i.imgur.com/DXZPFkk.png) --- ### Homomorphism: $f(x\circ y) = f(x) \circ f(y)$ ![image](https://hackmd.io/_uploads/BkeEXfyU6.png) --- ### Equivariance: $f(act(g,x)) = act(g,f(x))$ ![](https://i.imgur.com/GubgyFg.png) # What does dimensionality mean? --- # Why fiber bundles? [Butler] ---- ![image](https://hackmd.io/_uploads/rybrdAoNT.png) ---- ![](https://i.imgur.com/2Yi0ccj.png) ---- ### What's the advantage? ![](https://i.imgur.com/oORvB7F.png) ---- ![](https://i.imgur.com/QW5RAoD.png) ---- ### We can also represent graphics the same way ![](https://i.imgur.com/sWb1QZ3.png) --- ## Topology as categories Partitioning of a space into its subspaces such that those subspaces can be composed back into the total space; the choice of partitions is how we encode the connectivity of the data and visualizations that we are interested in. * objects: subspaces of the data $U_i$ * morphisms: inclusion $i: U_i \rightarrow U_j$ ---- ### Joining subsets: $\oplus: K \sqcup K \rightarrow K$ ![image](https://hackmd.io/_uploads/rkE1wCsE6.png) --- ## Fields [Spivak] as categories * objects - set of all possible values for a given type * $\pi^{1}(\texttt{int}) = \mathbb{Z}$ * morphisms: * closed operations: eg +, -, *, % * arbitrary closed functions $\tilde\phi \in Hom(F, F)$ ---- ## Joining records: $\otimes: F \times F \rightarrow F$ ![image](https://hackmd.io/_uploads/rJE4DAjN6.png) ---- # Data? $\tau: k \mapsto record$ ![](https://i.imgur.com/Cv1XiH6.png) ---- ## Data containers: sheaves ![image](https://hackmd.io/_uploads/ryET80sNT.png) --- # What does preserving topology really mean? ![](https://i.imgur.com/ntU9tI9.png) --- # What is visualization? ![](https://i.imgur.com/o6Kspwe.png) ---- | | topology | fields | dataset| |---|------|-----|-----| |data| $k \in U \subseteq K$ | $r\in F$ | $\tau: K \rightarrow E$| |visual| $k \in U \subseteq K$ | $v \in P$ | $\mu: K \rightarrow V$ | | graphic| $s \in W \subseteq S$ | $d \in D$ | $\rho: S \rightarrow H$| ---- ![](https://i.imgur.com/jnKSARl.png) --- ## Homeomomorphism: $\xi$ ![deform_retract](https://hackmd.io/_uploads/HyOdHyh4p.png) --- ## Homomorphism, equivariance, etc.. ![](https://i.imgur.com/GvO9tC8.png) ---- ![](https://i.imgur.com/dj5vE6a.png) --- ## How do we test structure: change(input)==change(output) ![image](https://hackmd.io/_uploads/rJTrFJhNa.png) ## Multivariate complex dimensionality --- ![](https://i.imgur.com/DXZPFkk.png) --- ![](https://hackmd.io/_uploads/BkhSUkhNp.png) --- ![image](https://hackmd.io/_uploads/BJphwk3Ep.png) --- # So how do we build it? ![](https://i.imgur.com/oFnWxtR.png) --- ## Indexing: $\xi: W \mapsto U$ \begin{equation} \underbrace{\xi: K\times[0,1]^{n}}_{S}\mapsto K \end{equation} \begin{equation*} n = \begin{cases} dim(S) - dim(K) & dim(K)<dim(S)\\ 0 & otherwise \end{cases} \end{equation*} --- Everything in the graphic maps back to data: for $s \in W$ exists $k \in U$ s.t. $\xi(s) = k$ ![](https://i.imgur.com/bzevt9R.png) --- ## Encoding: $\nu: E \mapsto V$ ![](https://i.imgur.com/1gHBtBR.png) --- Moving values does not change encoding: $\nu(\tau_{E}(\hat\phi_{k}(k^{\prime})))= = \mu(\hat\phi_{k})(k^{\prime}))$ Changing values changes the encoding in a consistent way: and $\widetilde\phi_{V}\nu(\tau(k)) = \nu(\widetilde\phi_{E}(\tau(k)))$ ---- ### Infinite composability ![image](https://hackmd.io/_uploads/Bkf8qk3NT.png) ---- ![image](https://hackmd.io/_uploads/SkEt9J3Np.png) --- ## Pre-rendering: $Q: V \rightarrow G$ Moving values retains relative position while not changing visual encoding: $\mu(\hat\phi_{K}(k^{\prime})) = \lambda(\rho|_\xi^{1}(k))$ Changing values changes the prerendering in a consistent way: $\widetilde\phi_{V}(\mu(k)) = \widetilde\phi(\lambda(Q(\mu(k))))$ ---- ![](https://i.imgur.com/FniNaRV.png) ---- ![](https://i.imgur.com/LaHTnjD.png) ---- ![image](https://hackmd.io/_uploads/BkY25yh4p.png) --- ![image](https://hackmd.io/_uploads/BJbyoJhV6.png)
{"metaMigratedAt":"2023-06-18T03:15:46.555Z","metaMigratedFrom":"YAML","title":"Viz class","breaks":false,"description":"May 3 vizualization class","slideOptions":"{\"theme\":\"white\"}","contributors":"[{\"id\":\"2d96a489-4097-4766-8206-715ac7bd25bb\",\"add\":17282,\"del\":11307}]"}
    410 views