Csvgraph foi projetado para permitir a visualização rápida de gráficos de arquivos csv potencialmente muito grandes (GB) (para comparação, a maioria das planilhas é limitada a 1.048.576 linhas). Csvgraph não tem limites integrados, mas em última análise, é limitado pela RAM disponível (a versão de 32 bits usará até 4 GB de RAM se estiver disponível, enquanto a versão de 64 bits usará toda a RAM disponível e virtual memória). Mesmo com arquivos extremamente grandes, a leitura é rápida e o zoom normalmente é instantâneo.
Supõe-se que esses arquivos csv tenham cabeçalhos de coluna na primeira linha, portanto, um arquivo csv típico seria iniciado:
"Tempo(s)","Col-2","Col-3","Col-4","Col-5"
99950,20,0,20,20
99950.1,10,1,11,12
Os valores são lidos como números de ponto flutuante, portanto, são restritos a números entre +/-3,4e+38 e o menor número diferente de zero é aproximadamente 1,4e-45, com aproximadamente 7 dígitos significativos.
Além de gráficos simples dos dados em arquivos csv, os dados podem ser filtrados de várias maneiras diferentes (incluindo filtros de mediana, ajustes polinomiais e FFTs), bem como calculados a partir dos dados csv (por exemplo, a diferença absoluta entre os dados em 2 as colunas do arquivo csv podem ser facilmente plotadas (por exemplo, "abs($3-$4)" irá plotar a diferença absoluta entre as colunas 3 e 4).
O arquivo csvgraph.pdf contém o manual completo e vários exemplos de seu uso.
1v0 - primeiro lançamento do github
1v1 - 01/06/2021 - corrigido possível problema com o componente DC da FFT. Adicionado Menu/Ajuda/Manual. Manual atualizado.
1v2 – 24/01/2021 – correção de bug - “inf” no arquivo csv seria lido como um número extremamente grande (infinito), o que causava problemas quando o csvgraph tentava dimensionar números e desenhar o gráfico. Adicionadas muitas mais opções de “filtragem”, incluindo exponencial, potência, hiperbólica e sqrt.
1v3 – 02/03/2021 - mais opções de ajuste de curva adicionadas, y=mx, y=mx+c com GMR , erro absoluto mínimo e erro relativo mínimo, e y=a x+b sqrt(x)+c.
2v0 – 17/02/2021 – Principais mudanças internas para reduzir o uso de RAM e melhorar a velocidade. Sem alterações no funcionamento.
2v1 – 21/3/2021 – mais opções de ajuste de curva adicionadas; y=a+b sqrt(x)+c x+d*x^1,5, y=(a+bx)/(1+cx), y=(a+bx+cx^2)/(1+dx+ ex^2), polinômios em sqrt(x) de ordem definida pelo usuário e funções racionais (polinômio/polinomial) para uma ordem definida pelo usuário.
2v2 - 04/05/2021 - $T1 a Tn permitido em expressões usar valores de traços existentes no gráfico. Os rastreamentos são numerados a partir de 1. Números de rastreamento inválidos (muito grandes) retornam 0. O usuário agora pode definir a ordem do filtro linear. Isso é implementado como um filtro Butterworth de enésima ordem (10*ordem dB/década). Order=0 não fornece filtragem. Order =1 fornece a mesma filtragem de antes. "filtros" para integral e derivada adicionados. Todos os filtros agora relatam o progresso como uma% (anteriormente, o erro mínimo de abs e o erro mínimo relativo não informavam o progresso e podem ser bastante lentos). Opção para pular N linhas antes do cabeçalho csv adicionada para casos onde o cabeçalho csv não está na primeira linha do arquivo Adicionados números de coluna às caixas de listagem da coluna X e da coluna Y para facilitar a seleção de colunas quando os nomes não são muito descritivos (ou faltam ).
2v3 - 23-1-2022 adicionado ajuste de curva y=m x log(x)+c. Funções de classificação e mediana melhoradas para torná-las mais rápidas - a classificação usará todos os processadores disponíveis para melhorar sua velocidade de execução.
2v4 - correção de bug de 3-2-2022, usando variáveis $Tn em uma expressão com um conjunto de valores do eixo x que eram
não em ordem numericamente crescente (e por isso precisava ser classificado) não funcionou corretamente em 2v2 e 2v3 – desculpe.
2v5 - 16-2-2022 Melhor reporte de linhas inválidas em arquivos csv. Na leitura dos tempos, tornou-se opcional o início no tempo zero.
2v6 – 27/02/2022 – Filtro Median1 melhorado, para <= 10.000 pontos de dados agora é exato e é (muito) mais para rastreamentos precisos com um número maior de pontos de dados. A posição das legendas dos traços foi movida para a esquerda para que mais texto possa ser visto.
2v7 – 22/3/2022 – imprime frequência de -3dB para filtro linear. Exibir ao usuário 1 exemplo de cada tipo de erro no arquivo csv. Se datas estiverem presentes em algumas linhas do arquivo csv, sinalize as linhas sem data como um erro potencial quando a coluna x for definida como hora. Novo algoritmo de mediana (exato) (filtro de mediana recursivo), que recorre à amostragem se o tempo de execução se tornar longo. Mediana e Mediana 1 renomeadas como filtro de mediana recursivo e filtro de mediana padrão.
2v8 - 23/05/2022 – capacidade adicional de ler uma data e hora conforme o valor x csvsave adicionou% concluído e (significativamente) acelerou a gravação no arquivo. csvsave interpola se necessário para que os valores de x não precisem ser idênticos em todos os rastreamentos.
2v9 – 06/07/2022 – correção de bug – se o deslocamento x não for igual a 0 e vários traços adicionados o deslocamento x incorreto foi aplicado ao segundo traço adicionado em diante. Maior resolução interna na leitura de datas e horas, portanto, se “hora de início do zero” estiver marcada, os resultados poderão ser um pouco mais precisos.
3v0 – 15/8/22 – Nunca lançado – 1ª versão de 64 bits
3v1 – 17/8/22 – Nunca lançado. Código fonte refatorado com “arquivos comuns” (que podem ser usados em outros programas) separados. Alguns arquivos movidos de C++ para C, onde eram puros C e o compilador C++ gerou muitos avisos.
3v2 – 14/09/2022 – 1ª versão de 64 bits. A versão de 64 bits usará toda a memória disponível, enquanto a versão de 32 bits é limitada a 4 GB de RAM, exceto que a funcionalidade é idêntica. A versão de 64 bits pode ler arquivos com mais de 2 ^ 32 linhas, a versão de 32 bits ficará sem RAM antes que muitas linhas possam ser lidas.
Pequenas alterações: Quando o menu Escalas era invocado várias vezes anteriormente, a escala mudava ligeiramente – corrigido. Faixa permitida de tamanhos de fonte para o título principal e títulos dos eixos X/Y expandidos. A FFT agora faz uso de vários núcleos de processador, se estiverem presentes, para fornecer resultados mais rápidos.
3v3 - 26/9/2022 - mudanças na versão de 64 bits para permitir o carregamento de arquivos ainda maiores (usando memória virtual e também RAM)
3v4 - 1/10/2022 - corrigido problema de manipulação de dpi quando vários monitores eram usados na versão de 64 bits.
3v5 – 11/06/2022 – ao clicar com o botão direito do mouse quando uma linha é selecionada, a inclinação desta linha (dy/dx) é fornecida, bem como as coordenadas de ambas as extremidades da linha. Um nome de arquivo pode ser fornecido na linha de comando (em versões anteriores isso não funcionava para a versão de 64 bits). Uma expressão contendo uma função agora é permitida para o eixo y (por exemplo, max($2,0) ).
3v6 06/03/2023 – Cabeçalhos de colunas longos agora fazem com que uma barra de rolagem seja adicionada automaticamente às caixas de listagem X e Y para que possam ser totalmente vistas. Salve o intervalo x na tela como CSV adicionado ao menu Arquivo. Opção (caixa de seleção) adicionada para adicionar o nome base do nome do arquivo às legendas dos traços no gráfico, o que é útil se a mesma coluna for lida em vários arquivos. Título do eixo Y adicionado automaticamente, a menos que o usuário especifique um (com base no cabeçalho da coluna do primeiro traço adicionado). Adicionada opção para carregar X como Valor/60 (seg->min), Val/3600 (seg->horas), val/86400 (seg->dias). O tratamento de erros para valores X em um formato de data/hora definido pelo usuário foi melhorado e espaços em branco à direita agora são permitidos.
3v7 06/10/2023 – Caixa de seleção “Mostrar lendas” adicionada. Alterado para usar o compilador Builder C++ 11.3. O título agora está centralizado acima do gráfico. Pequenas alterações em tamanhos, fontes, etc. no csvgraph.
3v8 07/04/2023 csvsave onde o segundo rastreamento tinha menos pontos que o primeiro rastreamento causou um erro - corrigido.
3v9 26/02/2024
Agora é possível abrir um arquivo que o Excel já abriu (e as mensagens de erro são melhores quando não consegue abrir os arquivos). Melhor captura do usuário pressionando um botão de "comando" enquanto um comando anterior ainda está em execução. A derivada agora usa o algoritmo Savitzky Golay de 17 pontos com ordem especificada pelo usuário (1->10 é realmente usado, pode ser definido como 1->infinito pelo usuário). Suavização Savitzky Golay adicionada como uma opção de filtragem (25 pontos, com ordem especificada pelo usuário, 1-> 10 é realmente usado, pode ser definido como 1-> infinito pelo usuário). Adicionada a segunda derivada (d2y/d2x) à lista de filtros que usa um algoritmo Savitzky Golay de 25 pontos com ordem especificada pelo usuário (1->10 é realmente usado, pode ser definido como 1->infinito pelo usuário). Se faltar um número numa coluna referida numa expressão, este será definido como nan. Adicionada constante "nan" para expressões. Se uma expressão for avaliada como nan, a linha será ignorada, portanto, esta pode ser uma maneira poderosa de selecionar pontos para exibição do csvgraph. Adicionadas "variáveis" x e linha às expressões. x é o valor atual de x e linha é o número da linha atual. Manipulador de expressão atualizado para que nan==nan e nan!=nan funcionem conforme esperado nas expressões.
3v10 04/06/2024 Adicionado filtro de suavização de spline.
4v0 7/3/2024 Csvgraph agora funciona com texto Unicode (uft-8) para que qualquer caractere possa ser usado. Isso significa que um arquivo csv codificado em uft-8 será lido corretamente e seu BOM (Byte Order Mark), se presente, será processado corretamente. Os títulos das colunas, os títulos principais e os títulos dos eixos podem incluir caracteres utf8. Utf-8 é compatível com versões anteriores de ASCII de 7 bits, portanto, arquivos CSV “convencionais” devem ser processados exatamente como antes. Ao salvar um arquivo csv, você tem a opção de especificar que o arquivo será criado com uma BOM. Os nomes de arquivos e os caminhos para os arquivos também podem conter caracteres Unicode (utf-8). Observe que salvar um arquivo CSV com versões recentes do Excel cria um arquivo csv no formato utf-8 com uma lista técnica, e uma lista técnica é necessária para que o Excel reconheça o arquivo csv se você tentar abri-lo. Outras alterações: • As imagens da tela podem ser salvas nos formatos BMP, jpg, png, gif, tiff e wdg. • ? operador pode ser usado livremente em expressões, por exemplo ($1==0?0:1) agora é aceito como uma expressão válida (anteriormente só funcionaria com os colchetes removidos) • para regressão em polinômios de sqrt(x), pontos com negativo x agora são ignorados. • X e x são permitidos em expressões (útil como recortar e colar equações [por exemplo, de um ajuste de curva] pode usar X)
Cvsgraph é um programa portátil que não precisa de instalação.
Copie o arquivo csvgraph32.exe ou csvgraph64.exe para qualquer local do seu computador (ou execute-o a partir de um pendrive ou similar). Adicione csvgraph.pdf ao mesmo diretório para permitir acesso ao manual de dentro do csvgraph (menu ajuda/manual).
Um atalho na área de trabalho simplifica a execução do csvgraph.
Consulte o arquivo LICENSE para obter detalhes, mas o csvgraph é gratuito para uso comercial e não comercial.
csvgraph é executado no Windows (10 32 ou 64 bits). Ele deve rodar em versões anteriores (para o Vista) ou no Wine no Linux, mas não foi testado.
A partir da versão 3v7, o código-fonte foi compilado com o Embarcadero® C++Builder 11.3 - um arquivo de projeto adequado está incluído no arquivo. Deve ser compilado sem erros ou avisos. Deveria ser fácil migrar para uma versão mais recente do C++Builder (pelo menos para um destino Windows de 32/64 bits), mas igualmente não seria muito difícil reverter para versões anteriores (de volta ao Builder C++ V5) se necessário.
Muitas partes do código-fonte podem ser interessantes se você não usar o C++Builder - por exemplo, atof.c faz parte do ya-sprintf, consulte https://github.com/pj-miller/ya-sprintf
expr-code.c contém muitas rotinas que geralmente são úteis - incluindo um avaliador rápido de expressões gerais para expressões armazenadas em strings.
UScientificGraph.cpp contém uma implementação de filtro mediano eficiente e uma implementação de ajuste polinomial, que funcionam bem com um número muito grande de pontos de dados e acredita-se que as implementações para estes sejam novas. Ele também contém um algoritmo de recorte de linha rápido que permite zoom in/out "infinito".