Experimento de densidade de UI feito com Svelte
(cybernetic.dev)- Grid é um experimento em que o usuário pode ajustar a densidade da UI, e uma nova versão está em desenvolvimento
- Matrix, um projeto na mesma linha, mostra uma matriz de correlação do S&P 500 e do NASDAQ-100 com foco em uma densidade de UI ainda maior
- Ao selecionar os papéis que compõem o S&P 500, ele lida com correlações de mais de 250 mil células e mais de 30 milhões de pontos de dados
- Alguns recursos não aparecem na prévia abaixo; para avaliá-los, é preciso abrir a UI em tela cheia do Matrix
- O material do site é apenas para fins informativos e não deve ser considerado aconselhamento de investimento nem recomendação de compra ou venda de valores mobiliários
Experimento de densidade de UI de Grid para Matrix
- Grid foi um projeto que experimentou densidade de UI personalizável, e uma nova versão está em desenvolvimento
- Matrix é um experimento que leva a densidade de UI ainda mais longe, oferecendo uma matriz de correlação em grande escala do S&P 500 e do NASDAQ-100
- É possível ver parte do Matrix na prévia abaixo, mas alguns recursos só estão disponíveis na UI em tela cheia do Matrix
Escala dos dados tratados pelo Matrix
- Ao selecionar os papéis que compõem o S&P 500 como conjunto de dados, ele inclui mais de 250.000 células
- Calcula correlações de mais de 30.000.000 de pontos de dados
- Mais informações podem ser vistas na página About do experimento Matrix
- A página home fornece uma visão geral de todos os experimentos de visualização de dados disponíveis atualmente
Controles que podem ser verificados na prévia
- Em Dataset, há as opções S&P500 e NASDAQ100
- Em Horizon, é possível selecionar 1M e 1Y
- Como opção de pré-processamento de dados, há a caixa de seleção Detrend Data
- As opções relacionadas à ordenação são as seguintes
- Sort By: Cluster, AvgCorr, MedCorr, Name
- Cluster Method: Avg, Complete, Ward
- Sort Direction: Asc, Desc
- A UI de prévia inclui Minimap, Search, Rolling Correlation Chart e orientações para hover e click nas células
- No estado exibido, aparecem Symbols 101, Correlations 5,050, Cells 10,201
Pontos de atenção ao usar
- O material do site é apenas para fins informativos e não constitui aconselhamento de investimento nem recomendação de compra ou venda de valores mobiliários
1 comentários
Opiniões no Hacker News
Ultimamente venho fazendo experimentos entre ordenação e exibição. Se uma issue trazida do Jira está bloqueada, fico pensando se preciso de uma coluna booleana separada para ordenar/filtrar, ou se basta aplicar estilo a outra coluna (por exemplo, tempo decorrido). Estou vendo se, em uma tabela com mais de 100 linhas, apenas valores em laranja, vermelho e vermelho em negrito em uma célula são suficientes para identificar os itens que precisam ser tratados agora
Do modo de visualização em tabela desse experimento, gosto da atualização em tempo real, da ordenação estável em várias colunas, do destaque da linha ao passar o mouse, do esmaecimento dos zeros à direita, das cores sem exagero (basicamente uns três pares) e dos gráficos tipo sparkline nas colunas 24H Low/High. O que deixa a desejar é a barra de rolagem horizontal quase invisível, a barra de rolagem vertical larga com gráficos acoplados, a falta de clareza sobre como 24H Low/High é de fato ordenado e a ausência de filtragem. Também noto que, em comparação com meus relatórios, a variação na largura dos valores não é grande. Quando há texto misturado em vez de apenas números, gerenciar a largura das colunas fica mais difícil
A hélice me parece difícil de ler e pouco útil. Esse tipo de gráfico combina melhor com dados periódicos cujo período é muito mais curto que o intervalo total dos dados
O cubo despertou curiosidade, mas não vi bem a vantagem. Em geral, visualizações 3D são menos eficazes do que mostrar a mesma coisa em três gráficos 2D (neste caso, três gráficos de dispersão). Isso acontece porque a projeção de 3D para 2D introduz distorções, e também atrapalha a nossa percepção básica de comparação de posições. Fiquei curioso sobre qual era o efeito pretendido aqui
A forma como permite olhar para o passado da maneira mais natural possível, enquanto faz os dados recentes aparecerem maiores, é realmente genial. É difícil acreditar que eu nunca tinha pensado nisso
Desde o "Material Design", que o Google praticamente enterrou, houve desperdício demais com inchaço, espaços em branco, espaçamentos excessivos e essa ideia de “respiro”
Sonhar não custa
As empresas não querem projetar duas UIs muito diferentes para cada plataforma, e, em geral, os usuários querem que o modo de uso aprendido em uma plataforma se transfira para outra
A acessibilidade também fica mais fácil quando o design tem folga para fontes grandes e não exige controle motor preciso. Ao ver meu pai envelhecer de forma perceptível, venho percebendo que até apps que parecem espaçosos não são suficientes desse ponto de vista
Enquanto as forças que nos empurraram nessa direção desde o início não mudarem, não sei bem como poderíamos voltar a designs com alta densidade de informação
Essas telas usam uma fonte monoespaçada de tamanho único. É retrô, como uma UI em modo texto dos anos 1980, e tudo bem se essa era a restrição pretendida
Mas, se fosse possível criar uma hierarquia adequada de fontes e tamanhos, daria para colocar muito mais informação na tela
Como exemplo básico, a caixa “About” hoje ocupa quase 1/4 da tela de um celular. Se fosse trocada por uma fonte proporcional menor, ainda legível no celular, daria para colocar essa informação em metade do espaço
Ao observar o trabalho de grandes designers de informação como Edward Tufte, muitas vezes se vê uma obsessão em acertar a tipografia. Os livros dele usam vários elementos e escalas tipográficas até no texto corrido fora das visualizações
Fico curioso se o foco é desempenho, visualização ou densidade relacionada a outra coisa
Definitivamente dá a sensação de ter recebido muita influência
Tentativas de criar uma UI semelhante em React tiveram desempenho ruim e, em geral, fracassaram. Para obter desempenho de renderização aceitável, a tabela de dados desviou completamente do React. Mesmo assim, para impedir que a renderização do próprio navegador ficasse insuportavelmente lenta, foi preciso minimizar o número de elementos DOM por linha
WinForms provavelmente ainda é meu framework de UI favorito. Com certeza é uma ferramenta meio bruta, mas dá para brandi-la à vontade. É extremamente flexível, bem fácil de usar, bastante rápido e terrivelmente feio
Você pode jogar qualquer Object arbitrário nele e simplesmente funciona. Dá para aninhar um PropertyGrid dentro de outro PropertyGrid, expandir para coleções de objetos e aninhar controles na profundidade que quiser. Não é preciso mexer nem se preocupar com a estrutura interna do objeto ao qual a UI está conectada (com limites, claro)
Para mim, WinForms é o ideal platônico de um framework de UI. Se eu fosse projetar um, acho que faria exatamente assim
Gosto muito de densidade de informação
Coleciono jornais antigos, e naquela época a densidade de informação era muito maior. Se você estiver procurando um ótimo livro de mesa, procure por "nytimes complete front pages". Havia uma quantidade enorme de informação essencial acima da dobra
Vejo alta densidade de informação como equivalente a alta inteligência. Acertar as prioridades de ordenação é muito valioso e importante
Nos últimos anos, a web parece ter ido na direção oposta, então é bom ver que ainda há gente remando para o outro lado
Outro exemplo: meu blog foi projetado para permitir ver cerca de 20 anos de posts de uma só vez usando zoom (https://breckyunits.com/)
Também devo lançar em breve um trabalho para promover cheat sheets de alta densidade de informação e torná-las mais fáceis de criar. Estou pensando em fechar no nome Leet Sheet (https://pldb.io/blog/leetSheets.html)
Isso é interessante porque prova algo sobre minha visão e minha compreensão visual
A visualização "Grid" é perfeitamente aceitável. A visualização "Table" é inutilizável
Tenho muitos problemas de perder em qual linha estou ao percorrer horizontalmente linhas longas assim. Percebi que isso se deve a uma tendência de minha dominância ocular se deslocar um pouco para a direita quando o olhar se move. Meu alinhamento binocular é sutilmente desalinhado e uso correção prismática; uma mudança recente nessa correção melhorou a situação
Nesta apresentação, a posição das linhas indicadoras nas colunas low/high piora ainda mais o deslocamento acidental entre linhas (que sempre acontece para cima)
Para mim, acho que o gráfico de linha funcionaria melhor como plano de fundo da célula ou na parte inferior da célula. As linhas também precisam de um listrado sutil
A lição que tiro, como alguém que é um leitor rápido e competente e não tem deficiência visual ou cognitiva, é: não presuma que seja aceitável colocar informações ao longo de linhas largas nesse tipo de tabela. É preciso oferecer ao usuário pistas para se prender à linha enquanto ele percorre horizontalmente. Linhas divisórias finas não bastam, e mudança de fundo no mouse over não funciona em dispositivos de toque
No estado atual, quando me deparo com algo assim, costumo desmaximizar a janela, reduzir sua altura e rolar a página usando a parte inferior da janela ou a barra de título de outra janela como uma “borda” consistente para ler os dados. No iPad, já usei papel ou um cartão
Primeiro, como mencionado, o contraste entre a linha sob o mouse ou destacada e as demais é baixo demais. Mesmo eu, com visão ok, acho difícil de ver
Segundo, para legibilidade, linhas ou colunas de tabela deveriam ser listradas com duas ou mais cores de alto contraste. Por exemplo: branco, preto, branco, preto. Esta tabela é preta do começo ao fim
Terceiro, o contraste das bordas da tabela é baixo demais, a ponto de serem quase invisíveis. Combinado com a cor única de linhas/colunas, isso prejudica ainda mais a legibilidade
Em resumo, a tabela em si está ok; as cores são péssimas
Os elementos de UI aqui parecem muito legais, mas também fiquei curioso sobre qual era o experimento e que conclusões foram tiradas
Olhando apenas para o número bruto de elementos interativos, na minha experiência (Svelte 4), a renderização costuma dar problema antes da interatividade. Ou seja, você encontra problemas de desempenho no mesmo número de elementos, independentemente de eles serem interativos. Como foi implementado em algumas partes desta página, a solução é ir para canvas
Svelte também pode desenhar em canvas. Há também o Threlte: https://threlte.xyz/
Em relação ao desempenho interno do Svelte, não acho que algo como Jotai seja tão necessário quanto no React para evitar rerenderizações desnecessárias
Combinar Svelte com um ótimo framework WebGL como Phaser permite renderização gráfica muito rápida: https://phaser.io/news/2024/03/official-phaser-3-and-svelte-...
Aquele gráfico de hélice é realmente atraente. Não sei bem se dá para usar na prática, mas visualmente é incrível
Se isso era um experimento, qual foi a conclusão?