## 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-->

----
<!-- the artist object-->

---
# 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]

----
## Relations between elements [Mackinlay]

---
# 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

---
### Homomorphism: $f(x\circ y) = f(x) \circ f(y)$

---
### Equivariance: $f(act(g,x)) = act(g,f(x))$

# What does dimensionality mean?
---
# Why fiber bundles? [Butler]
----

----

----
### What's the advantage?

----

----
### We can also represent graphics the same way

---
## 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$

---
## 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$

----
# Data? $\tau: k \mapsto record$

----
## Data containers: sheaves

---
# What does preserving topology really mean?

---
# What is visualization?

----
| | 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$|
----

---
## Homeomomorphism: $\xi$

---
## Homomorphism, equivariance, etc..

----

---
## How do we test structure: change(input)==change(output)

## Multivariate complex dimensionality
---

---

---

---
# So how do we build it?

---
## 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$

---
## Encoding: $\nu: E \mapsto V$

---
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

----

---
## 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))))$
----

----

----

---

{"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}]"}