Les commentaires

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Wow, merci ! T'as dû y passer un certain temps !
    C'est assez joli ce qu'on peut faire. J'espère avoir le temps d'essayer ça d'ici la semaine prochaine. Je te dirai mes trouvailles, notamment si ça me convient !

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Bonjour Sarcastic ,

    Toutes mes plates pour la période d'hibernation.

    Sans transition, d'abord, la fonction image (bibliothèque base) peut aider à obtenir des résultats semblables à ceux de Gnuplot. Ensuite, pour des résultats améliorés, on peut voir du côté de la fonction image.plot (bibliothèque fields) ; dans les deux cas, la bibliothèque akima peut accomplir l'interpolation. Puis, si on veut ajouter de la perspective à la visualisation, la bibliothèque misc3d pourra aider. Enfin, à mon avis, ggplot2 est inadéquat pour ce genre de traitement. Foin de verbiage, place au code.

    • Pre-processing et quelques définitions
    invisible(sapply(c("akima", "fields", "ggplot2", "gridExtra", "misc3d"), function(xxx) {
     library(xxx, character.only = TRUE)
    }))
    interpoCoord <- function(component) {
     return(seq(
     from = min(component),
     to = max(component),
     length.out = 2 * length(component)
     ))
    }
    utilFields <- function(interpolated, xText = "", yText = "", legText = "") {
     image.plot(interpolated, horizontal = TRUE, legend.lab = legText)
     title(xlab = xText, ylab = yText)
    }
    rphys1 <- read.table("rphys_a1_K_1_3.dat", sep = "", quote = "", skipNul = TRUE)
    rphys2 <- read.table("rphys_a2_K_2_3.dat", sep = "", quote = "", skipNul = TRUE)
    names(rphys1) <- names(rphys2) <- c("x", "y", "z")
    rphys1Smooth <- with(rphys1, interp(x = x, y = y, z = z , xo = interpoCoord(x), yo = interpoCoord(y)))
    rphys2Smooth <- with(rphys2, interp(x = x, y = y, z = z, xo = interpoCoord(x), yo = interpoCoord(y)))
    imWidthBase <- 800
    imHeightBase <- 600
    imWidthFields <- imWidthBase - 350
    imHeightFields <- imHeightBase - 100
    shapeChar <- 19
    shapeSize <- 3
    lowCol <- "#720808"
    highCol <- "#ffff00"
    oddMargins <- unit(c(.01, .01, .01, .2), "cm")
    evenMargins <- unit(c(.01, .2, .01, .01), "cm")
    • Bibliothèque base
    png("rphys1_base.png", width = imWidthBase, height = imHeightBase)
    image(rphys1Smooth, xlab = absTag, ylab = ordTag)
    dev.off()
    png("rphys2_base.png", width = imWidthBase, height = imHeightBase)
    image(rphys2Smooth, xlab = absTag, ylab = "")
    dev.off()

    Avec-base

    • Bibliothèque fields
    png("rphys1_fields.png", width = imWidthFields, height = imHeightFields)
    utilFields(rphys1Smooth)
    dev.off()
    png("rphys2_fields.png", width = imWidthFields, height = imHeightFields)
    utilFields(rphys2Smooth)
    dev.off()

    Avec-fields

    • Bibliothèque misc3d

    Warning : La projection des perspectives est un traitement très lourd pour ces données !

    sceneObj1 <- with(rphys1, surfaceTriangles(x, y, z, material = "shiny"))
    sceneObj2 <- with(rphys2, surfaceTriangles(x, y, z, material = "shiny"))
    exportScene(sceneObj1, filename = "rphys1_3D", format = "OFF")
    exportScene(sceneObj2, filename = "rphys2_3D", format = "OFF")
    drawScene(sceneObj1, engine = "standard")
    drawScene(sceneObj2, engine = "standard")
    • Bibliothèque ggplot2
    fig1 <- ggplot(rphys1, aes(x, y, fill = z)) +
     geom_raster(interpolate = TRUE) +
     scale_fill_continuous(low = lowCol, high = highCol, name = "") +
     xlab("") + ylab("") +
     theme(legend.position = "top", plot.margin = oddMargins)
    fig2 <- ggplot(rphys2, aes(x, y, fill = z)) +
     geom_raster(interpolate = TRUE) +
     scale_fill_continuous(low = lowCol, high = highCol, name = "") +
     xlab("") +
     theme(legend.position = "top", axis.title.y = element_blank(), axis.text.y = element_blank(), plot.margin = evenMargins)
    fig3 <- ggplot(rphys1, aes(x, y, colour = z)) +
     geom_point(shape = shapeChar, size = shapeSize) +
     scale_colour_gradient(low = lowCol, high = highCol, name = "") +
     xlab("") + ylab("") +
     theme(legend.position = "top", plot.margin = oddMargins)
    fig4 <- ggplot(rphys2, aes(x, y, colour = z)) +
     geom_point(shape = shapeChar, size = shapeSize) +
     scale_colour_gradient(low = lowCol, high = highCol, name = "") +
     xlab("") +
     theme(legend.position = "top", axis.title.y = element_blank(), axis.text.y = element_blank(), plot.margin = evenMargins)
    grid.arrange(fig1, fig2, ncol = 2, respect = TRUE)
    grid.arrange(fig3, fig4, ncol = 2, respect = TRUE)

    Note. À part ceux de ggplot2, le reste des résultats s'interfacent très péniblement avec Tikz. Donc Gnuplot gagne haut la main sur la question de l'interopérabilité avec LaTeX et sur celle de la légèreté+rapidité, modulo mes connaissances très minimes sur Tikz : je suis preneur des propositions de comment éviter des erreurs du genre

    TeX capacity exceeded, sorry [main memory size=5000000].

    Oui, j'ai lu des propositions de solutions de ce type mais rien n'y a fait.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Je trouve ce mot horrible.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Pas physicien nucléaire.

    Moi non plus ! Je joue plutôt dans des conducteurs quantiques. Je te mets les fichiers de donnée là :
    http://atdot.eu/rphys/

    Pour ce qui est du pipeline, voilà l'idée :
    L'histoire commence avec un script gnuplot :

    set term cairolatex pdf input size 8.4cm,5.0cm
    set output 'rphys_a.tex'
    unset key
    set palette rgb 21,22,23
    # On met de l'interpolation pour que ce soit joli
    set pm3d map interpolate 0,0
    set multiplot
    set title offset character 0,1.8
    set xtics 20
    set ytics 20
    set xlabel '$\hbar \omega / E_B$'
    set ylabel '$\hbar \omega_{\mathrm{dc}} / E_B$' offset character -0.5,0
    set tmargin at screen 0.7
    set bmargin at screen 0.25
    set lmargin at screen 0.15
    set rmargin at screen 0.55
    set cbtics offset character 0,2
    set cbtics 5 
    set colorbox horiz user origin .2,.73 size .3,.03
    set xtics (-30,-15,0,15, 30)
    set title '$K = 1/3$'
    splot 'rphys_a1_K_1_3.dat' with pm3d
    set lmargin at screen 0.56
    set rmargin at screen 0.96
    set colorbox horiz user origin .61,.73
    set noylabel
    set ytics format ""
    set cbtics 1
    set xtics (-30,-15,0,15, 30)
    set title '$K = 2/3$'
    splot 'rphys_a2_K_2_3.dat' with pm3d
    unset multiplot

    Gnuplot génère alors deux fichiers : rphys_a.tex à inclure dans le document tex, qui contient les textes et rphys_a.pdf qui contient le reste.

    Pas graphiste

    Moi non plus. Je passe juste un coup d'imagemagick sur le pdf :

    convert +antialias -density 600 rphys_a.pdf rphys_a.png

    Et pour que ça marche parfaitement, faut changer la ligne "includegraphics" de rphys_a.tex, parce que sinon, ça prend pas la bonne taille, du coup, la ligne qui était :

    \put(0,0){\includegraphics{figures/rphys_a.png}}%

    devienne :

    \put(0,0){\includegraphics[width=8.4cm]{figures/rphys_a.png}}%

    Et voilà. \o/

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Ce commentaire est un aveu d'incompétence : "Je ne suis pas X".

    Pas physicien nucléaire. Dans l'incapacité de générer des données de test après avoir regardé les diverses quantités et relations de la Physique, je me suis fait des données bidons, histoire d'illustrer ggplot2. On y va :

    invisible(sapply(c("ggplot2", "tikzDevice", "gridExtra"), function(xxx) {
     library(xxx, character.only = TRUE)
    }))
    intervals <- seq(-40, 40)
    celerity <- 299792458
    hbar <- 1054571726e-34
    sampleData <- expand.grid(x = intervals, y = intervals)
    fakeQuantumRadius <- hbar * celerity / exp(sin(sampleData$x) * cos(sampleData$y))
    sampleData$z1 <- 2 * fakeQuantumRadius
    sampleData$z2 <- fakeQuantumRadius / 2
    shapeChar <- 20
    lowCol <- "chocolate4"
    highCol <- "yellow"
    fig1 <- ggplot(sampleData, aes(x, y, colour = z1)) +
     geom_point(shape = shapeChar) +
     scale_colour_gradient(low = lowCol, high = highCol, name = "$R = 2R_q$",
     label = seq(from = 0, to = 20, by = 5)) +
     xlab("$\\hbar\\omega / E_B$") +
     ylab("$\\hbar\\omega_{dc} / E_B$") +
     theme(panel.background = element_blank(), legend.position = "top")
    fig2 <- ggplot(sampleData, aes(x, y, colour = z2)) +
     geom_point(shape = shapeChar) +
     scale_colour_gradient(low = lowCol, high = highCol, name = "$R = R_q / 2$",
     label = seq(from = 1, to = 5)) +
     xlab("$\\hbar\\omega / E_B$") +
     theme(panel.background = element_blank(), legend.position = "top",
     axis.title.y = element_blank(), axis.text.y = element_blank())
    tikz("exemple_bidon.tex", standAlone = TRUE, width = 8, height = 5.33)
    grid.arrange(fig1, fig2, ncol = 2)
    dev.off()

    Le fichier exemple_bidon.pdf fait 838.8 kB. Avec ImageMagick :

    convert -density 150 exemple_bidon.pdf -quality 100 exemple_bidon.png

    RienÀVoirAvecLaPysiqueNucléaire

    Pas graphiste. Concernant la rasterisation, je me contente de citer quelques bibliothèques en R qui pourraient t'intéresser même si le langage n'est pas vraiment l'outil adéquat pour faire du Traitement d'Image avancé. Les bibliothèques alors : raster, rasterVis, adehabitatMA, Cairo, readbitmap

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    On dirait qu'il y a un petit souci avec la partie basse de l'image, à moins que le "découpage" ait été intentionnel.
    J'ai une vague idée de ton pipeline mais l'idéal serait d'avoir un code qui part de la lecture d'un de tes CSVs jusqu'à la création d'une image ; comme cela, j'essaierai de reproduire le traitement en R. Ou alors, un lien vers quelque chose de semblable sera aussi suffisant.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Alors, l'exemple canonique de ce que je veux faire, c'est ça :
    Graphe canonique

    En gros, j'ai un fichier texte qui contient mes données (typiquement du csv où sur chaque ligne tu as les coordonnées x et y, et la valeur en z). Pour que ça soit joli, je dirais que c'est assez souvent du 50x50 ou du 100x100, éventuellement avec un peu d'interpolation si ça suffit pas (là, faut imaginer que le truc c'est du 7cm de large).
    Le vrai problème c'est que selon le moteur de rendu utilisé par le lecteur PDF, ça devient archi-moche si tu gardes tout en vectoriel. Principalement, t'as des lignes blanches qui apparaissent aléatoirement aux jointures entre les différents patches, qui viennent de l'antialiasing visiblement.
    Ce qui sauve l'affaire, c'est que je peux convertir en bitmap, sans antialiasing, la partie graphe (celle qui contient les données, la colorbar, les axes et les contours). En fait, c'est même plus logique de faire comme ça, vu que les données sont essentiellement du bitmap (mais c'est pas parfait, parce que c'est évidemment pas le cas des axes et des contours).

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    As-tu un exemple de ce que tu fais habituellement et que tu aimerais refaire en R ? Si on prend ceci par exemple :

    library("misc3d")
    library("tikzDevice")
    tikz("parametric3d.tex", standAlone = TRUE)
    parametric3d(fx = function(u,v) u,
     fy = function(u,v) sin(v)*(u^3+2*u^2-2*u+2)/5,
     fz = function(u,v) cos(v)*(u^3+2*u^2-2*u+2)/5,
     umin = -2.3, umax = 1.3, vmin = 0, vmax = 2*pi,
     scale = FALSE, color = "red", color2 = "blue",
     material = "shiny", engine = "grid")
    dev.off()

    Après compilation du fichier .tex, la résolution est plus que respectable :
    Parametric 3D

    L'image est une capture d'écran de la "partie utile" dans le fichier parametric3d.pdf. Sa taille : 312.2 kB pour 946 x 731 pixels. Le PDF fait 318 kB.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Merci pour l'exemple ! Je jetterai un œil la prochaine fois que j'aurai à sortir un graphe.
    Et knitr/Sweave, ça a l'air assez puissant aussi pour tester le bouzin.
    Reste en fait à voir s'il est possible d'avoir des courbes en 3D assez résolues sans que :
    1. ça chie avec l'antialiasing du lecteur PDF
    2. ça soit lourd à mourir
    C'est notamment pour ces deux raisons que le backend idéal de mes rêves permettrait de rasteriser uniquement le bout coloré plein de polygones (dont il est assez peu utile d'avoir une version vectorielle).

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Bonjour,
    Concernant Gnuplot, je ne pourrais répondre, quelqu'un d'autre connaissant à la fois R et Gnuplot pourrait t'éclairer.
    Quant à Tikz, on configure les dépendances système de façon adéquate (distribution LaTeX) et après, Tikz sera considéré comme un périphérique de graphique au même titre que les autres (PDF, PNG, JPG, X11, ...). Cela est valable quel que soit le système graphique qu'on souhaite utiliser et peu importe les fonctions graphiques qu'on manipule, notamment mettre plusieurs graphiques sur une même zone de rendu. Je reprends le même exemple :

    invisible(sapply(c("ggplot2", "tikzDevice", "grid", "gridExtra"), function(xxx) {
     library(xxx, character.only = TRUE)
    }))
    humPop <- read.csv("./hum-pop.csv")
    names(humPop) <- c("Year", "Population")
    humLin <- qplot(x = Year, y = Population, data = humPop, geom = c("point", "smooth"), main = "Linear")
    humLog <- qplot(x = Year, y = Population, data = humPop, geom = c("point", "smooth"), log = "y", main = "Logarithmic")
    #Les sorties vont dans le périphérique par défaut
    grid.arrange(humLin, humLog, ncol = 2, main = "Earth Population Over Time")
    #Nous indiquons le périphérique de destination des sorties
    tikz("plotting_outputs.tex")
    grid.arrange(humLin, humLog, ncol = 2, main = "Earth Population Over Time")
    dev.off()

    La sortie ressemblera à ça :

    Human Population

    Dans le fichier TEX généré, ne pas oublier d'inclure le préambule et l'environnement document, quelque chose du genre :

    \documentclass[10pt]{article}
    \usepackage{tikz}
    \usepackage[active,tightpage,psfixbb]{preview}
    \PreviewEnvironment{pgfpicture}
    \setlength\PreviewBorder{0pt}
    \usepackage[T1]{fontenc}
    \usetikzlibrary{calc}
    \batchmode
    \begin{document}
    %contenu du fichier généré en R
    \end{document}

    Le mainteneur du binding de Tikz en R est Yihui Xie ; il a écrit d'autres bibliothèques spécialisées dans le traitement de LaTeX, Markdown, HTML et compagnies : voir sa page sur GitHub. En particulier, knitr est un authentique couteau suisse.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    En fait, le système traditionnel est très proche de ce qui se trouve dans Gnuplot, non ?

    Du coup, c'est vrai que la partie ggplot me semble très intéressante. Après, LA fonctionnalité de Gnuplot essentielle pour moi, c'est la capacité de sortie en PDF + LaTeX, parce que ça permet d'avoir un rendu quasi-parfait dans un document scientifique. Notamment, on peut bidouiller un peu le truc (convertir le pdf en png pour les plots colorés en 3D, par exemple, même si idéalement je préfèrerais n'avoir que la partie colorée en bitmap et le reste en vectoriel). Le problème c'est qu'il faut aussi se taper des heures de pinaillages sur la mise en page pour arriver à un truc qui bavasse pas dans tous les coins (mettre 3 plots côte à côte peut-être assez proche de la pénitence).
    Est-ce que tu as essayé le driver Tikz pour R, qui a l'air de faire un peu le même travail ? Parce que bénéficier d'un truc plus expressif que Gnuplot tout en gardant un rendu final aussi bon, ça serait un véritable rêve !

  • [^] # Re: Grilles de gnumeric

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Merci !

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    J'ai bien parlé du tracé à la main à l'école (papier millimétré linéaire, semi-log, et log-log). J'ai ensuite dit « à la main numérique », je trouvais ça marrant.

    Néanmoins, je suis tout à fait d'accord qu'il faut savoir tracer des courbes à la main sur papier, car c'est très formateur. Même si au collège/lycée, la droite de régression c'est un peu du pipeau, puisqu'on la trace souvent à vu, au lieu d'en calculer la valeur par une méthode genre celle de la médiane de médianes (qui permet de ne pas apporter trop de statistiques au début).

    Bon, mais de manière générale, à la main il est plus simple de faire une ébauche de courbe, et d'obtenir un rendu propre en numérique. C'est le meilleur des deux mondes ;)

  • [^] # Re: Grilles de gnumeric

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Les grilles sont ailleurs. Il faut ajouter des grilles principales et/ou secondaires aux axes. Personnellement, je supprime systématiquement l'arrière-plan (ou j'utilise un thème avec un remplissage transparent).

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3. Dernière modification le 19 mai 2015 à 13:28.

    C'est surtout que c'est ce que les élèves apprennent à l'école: traitement de texte / tableur

    À l'école il est particulièrement important de faire aussi tracer des courbes « à la main » (comprendre papier millimétré - crayon). Ça m'a d'ailleurs amusé de lire l'expression « à la main » dans le journal pour voir ce que cela signifiait pour l'auteur et les commentateurs.

    Le tracé manuel permet de comprendre convenablement la notion d'échelle et même d’appréhender celle d'incertitude et de précision : le calcul ou la mesure donne un point à placer à 50,42 mm, la mine de crayon en fait déjà 0,5 et la droite de régression – tracée « à l’œil cette fois-ci » – passe à 5 mm de certains points.

    Je parle ici de collégiens et de lycéens mais un prof de chimie me disait il y a quelques années qu'il imposait sur une année de TP au moins une courbe tracée ainsi.

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 5.

    Je me disais donc, que si tant de gens font des graphiques comme ça, c'est que ça doit être pas trop compliqué, et bien fait.

    C'est surtout que c'est ce que les élèves apprennent à l'école: traitement de texte / tableur (pour ne pas citer de marque...).

    Donc après ils utilisent par défaut ce qu'ils ont appris.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Grilles de gnumeric

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Oui, bien sûr. Par grilles, je parlais de l'arrière plan gris du graphique.

    Si tu créé un graph, sous « Backpane1 », tu peux choisir de quelle manière s'effectue le remplissage. Dans le type « pattern », tu peux choisir pleins de grilles, mais elles sont hyper serrées. Si tu regarde la capture d'écran faite avec Pandas, par exemple, tu peux voir une petite grille blanche pour les valeurs principales.

    Je ne sais pas si ces grilles-là sont trop serrées par défaut, ou alors c'est à cause de mon écran qui est à « dpi = 192 ».

  • # Grilles de gnumeric

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Les grilles sur le graphique ne sont pas super, et c'est un peu dommage. Mais il faut le boulot, et plutôt correctement.

    Peux-tu préciser ce qui ne va pas avec les grilles, histoire de voir si cela peut être amélioré ? Merci

  • [^] # Re: En javascript

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 0.

    Ou de croûtes de pieds /o\

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Merci pour les clarifications et astuces sur le téléversement. Voici donc les sorties du code se trouvant dans mon précédent commentaire :

    Première sortie
    Sans transformation logarithmique

    Deuxième sortie
    Avec transformation logarithmique

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Je ne connaissais pas le mot "téléverser" ; je vois qu'il n'est pas encore au dico français, mais il gagne en popularité, et il a déjà un nouvel adepte aujourd'hui :-).

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 6.

    Pour moi le tableur c'est le couteau suisse de la donnée,

    On sait qu'on va en trouver un sur la machine où on est connecté, on peut pas faire grand chose avec, mais ca permet d'assurer le service minimum vite fait/bien fait. par exemple un plot X,Y ou un calcul de moyenne/mediane/écart-type.

    Par contre dès qu'on veut faire des traitement un peu avancé : Filtrage, multi-plot, recherche de pics ou d'outliers etc... le tableur n'est pas un outil adapté (même si certains font avec) et il vaut mieux écrire directement du code (Python, R, Matlab, C++, Julia ou n'importe quel framework scientifique)

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 8.

    Je m'attendais vraiment à ce que quelqu'un montre le résultat d'un autre tableur, mais apparemment, les outils à scripts ont plus la côte.

    Pour cet exemple là parce que ton test est complètement biaisé, il ne porte que sur une courbe f(x) triviale dont les données sont stockées dans un pauvre fichier texte à 2 colonnes.
    Un tableur ça sert d'abord à faire des calculs, extraire des données de différents tableaux, les recombiner en utilisant des formules de calcul plus ou moins complexes, et finalement, éventuellement, produire des vues graphiques de différents types. Et bien sûr garder dans un seul document, les données, les formules de traitement et les graphiques associés. Avec mise à jour automatique des résultats de calcul et des graphiques quand les données sont modifiées (valeurs changées, données ajoutées ou supprimées).

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Je m'attendais vraiment à ce que quelqu'un montre le résultat d'un autre tableur

    J'attendais un utilisateur d'Excel, il est pas venu. ;)

    Je fais relativement peu de graphique en général. Sur Excel, je trouve ça anti ergonomique et laid. On arrive à s'en sortir mais il faut lutter.
    Très ressemblant à la description de LibreOffice, sur ce domaine.

    Je suis effectivement d'accord avec toi pour Gnumeric : je l'utilise pour mon usage personnel lorsque j'ai besoin d'un graphique. Plus simple à faire et meilleur résultat.
    L'export du graphique produit est également aisé, dans un format standard (de mémoire, au moins svg et png).

  • [^] # Re: R

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Bienvenue! Merci pour ce commentaire très instructif.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3. Dernière modification le 18 mai 2015 à 11:36.

    j'ignore comment téléverser une image sur les serveurs de LinuxFR.

    On ne peut pas. Il faut héberger l’image ailleurs, sur imgur.com par exemple. Ensuite tu peux intégrer cette image à ton commentaire (ou journal ou dépêche) ainsi :

    ![Titre de l'image](http://exemple.com/image.png) 
    

    EDIT : Arf, j’ai lu trop vite la réponse précédente...

  • [^] # Re: Finalement, les tableurs, ça sert à quoi ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 7.

    Le tableur? En général c'est un élément d'une suite logicielle "généraliste " qui fait aussi du "traitement de texte", des présentations, de la messagerie, etc ...

    L'intéret du tableur est d'être intégré dans ces outils, d'avoir un seul point d'entrée pour les applis et une relaitive uniformisation de ce type de document.

    Maintenant un tableur, c'est comme n'importe quel outil plus ou moins généraliste : ça permet de faire des trucs qui resssemblent à quelque chose relativement vite lorsque le besoin est assez simple, mais ça ne permet pas d'être vraiment efficace pour des choses un peu plus sophistiquées, ou si on veut un graphisme un peu meilleur (on peut faire la même comparaison avec LaTeX et Libreoffice ou Word par exemple).

  • # Finalement, les tableurs, ça sert à quoi ?

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Je m'attendais vraiment à ce que quelqu'un montre le résultat d'un autre tableur, mais apparemment, les outils à scripts ont plus la côte.

    Dans ce journal, je voulais aussi que les gens voient que l'ergonomie de ces logiciels pour faire des graphiques est vraiment moyenne : c'est à se demander si les tableurs ne servent pas à faire des graphiques du tout.

    Pourtant, en entreprise, le pourcentage de gens qui font leurs graphiques avec un tableur sont pléthores.

    Je me disais donc, que si tant de gens font des graphiques comme ça, c'est que ça doit être pas trop compliqué, et bien fait. Mais je ne trouve pas que ce soit le cas, sauf sur Gnumeric.

    À quoi servent les tableurs finalement ? Je trouve ça plus simple est puissant de travailler avec des matrices de valeurs avec des logiciels dédiés (comme R), où y faire des graphiques n'est pas si compliqué.

    Les suites libres de bureautiques doivent-elles continuer à maintenir leurs tableurs / graphiques ?

    Peut-être que c'est le même propos que word VS Latex pour les tableurs :)

  • [^] # Re: pygal

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    C'est quand même assez illisible : regarde les valeurs en abscisse et en ordonnée, la légende est tronquée.

    L'avantage de Pandas/R, c'est que le fichier csv est parsé pour toi en 1 ligne.

  • [^] # Re: pygal

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    J'ai oublié de dire qu'il ne permet pas d'avoir une échelle logarithmique en abscisse : https://github.com/Kozea/pygal/issues/84

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # Metapost

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    J'utilise toujours Metapost, le rendu est très professionnel:

    Image

    Les étiquettes en notation scientifique sont ajoutées automatiquement, et on peut bien-sûr utiliser un échelle logarithmique, ou toute autre échelle qu'on pourrait vouloir programmer.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    J'ai aussi galérer pour trouver comment téléverser une image.

    La réponse se trouve à la dernière ligne de la section image de l'aide à l'édition.

    L'hébergement de l'image initiale reste à votre charge, elle est en cache sur img : en auto-hébergé, sur pix de toile-libre ou lutim selon votre préférence...

    Je suis passé plusieurs fois à côté sans la voir et j'ai failli être découragé de poster mon commentaire. Je pense qu'il faudrait mettre ce point en évidence (en gras ou en début de section) ou dans une section à part (par exemple téléversement d'image).

  • # PyQWT

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2. Dernière modification le 18 mai 2015 à 00:18.

    Quelques autres outils qui pourraient être appropriés pour la tâche ?

    • PyQWT (c'est le premier auquel j'ai pensé en lisant le journal)
    • Scilab (qui a bien évolué depuis l'époque où je m'en servais en école...)
    • QTIplot (et assimilés) ?
    • (et en fait, je découvre qu'il existe une page Wikipedia recensant une pléthore d'autres outils !)
  • # xkcd

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 9.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3. Dernière modification le 17 mai 2015 à 23:59.

    Bonsoir,

    J'aimerais noter qu'en R, les systèmes de graphiques diffèrent surtout de par leurs philosophies. Un aperçu sommaire infra, sans prétendre à l'exhaustivité.

    • Le système traditionnel : on dessine (ou ajoute des éléments) sur le graphique courant, il est impossible de modifier quoi que ce soit d'un élément déjà dessiné. C'est le plus connu car venant nativement avec R dès les premières versions ; nous le devons principalement à Ross IHAKA.

    • Le système grid : un modèle informel représente les objets graphiques indépendamment du rendu ; on peut donc mettre à jour ces objets. Les systèmes de coordonnées sont liés à des viewports et non pas à la zone de dessin elle-même, ce qui permet de concevoir des graphiques sophistiqués. Ce système a vu le jour avec la thèse de doctorat de Paul MURRELL ; son principal défaut est le manque de primitives natives pour les graphiques statistiques.

    • Le système lattice ajoute au système grid les idées de William S. CLEVELAND sur les treillis (mathématiques). On a alors une grammaire de graphiques à disposition mais le modèle reste informel.

    • ggplot2 donc : reprise des bonnes idées que présentent tous les systèmes précédents, plus un modèle formel cette fois-ci.

    • Ce n'est pas tout : voir http://cran.r-project.org/web/views/Graphics.html.

    Quant à l'objet de la dépêche, pour reprendre le commentaire de eingrossfilou tout en restant dans le minimalisme souhaité par l'auteur du journal, je proposerais ceci :

    library("ggplot2")
    humPop <- read.csv("./hum-pop.csv")
    names(humPop) <- c("Year", "Population")
    qplot(x = Year, y = Population, data = humPop, geom = c("point", "smooth"), main = "Earth Population Over Time (linear)")
    qplot(x = Year, y = Population, data = humPop, geom = c("point", "smooth"), log = "y", main = "Earth Population Over Time (log)")

    P.S. C'est mon premier commentaire, j'ignore comment téléverser une image sur les serveurs de LinuxFR.

  • [^] # Re: R

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Notons au passage l'existence du module gnuplot pour Python qui permet de générer des graphiques gnuplot depuis des scripts Python.

    Bon par contre, ça n'a pas l'air super actif : http://gnuplot-py.sourceforge.net/

  • # pygal

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    J'aurais de base pris R ou python avec pygal (je ne connais pas panda).

    with open('fichier.csv') as csvfile:
     spamreader = csv.reader(csvfile, delimiter=',')
     data=[(int(row[0]), int(row[1])) for row in spamreader]
    xy_chart = pygal.XY()
    xy_chart.title = 'Human population (linear)'
    xy_chart.add('Population (Hyde 2007)', intdata[1:])
    xy_chart.render_to_file('fichier.svg')

    Et voila : http://imgh.us/fichier.svg

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • [^] # Re: Graphique "barre" avec python

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    Aurais-tu le fichier data.dat ?

    Si tu utilises Pandas, ton code va franchement être plus court.

    Sinon, du noir sur du bleu, c'est pas lisible, et changer ça, c'est une bonne idée.

    Pour ton abscisse, matplotlib est capable de gérer les dates correctement si ce sont de vrais objets dates, mais pas des chaînes de caractères. Ce fil sur stackoverflow peut sûrement t'aider.

  • # Graphique "barre" avec python

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Je me suis attaqué aux ventes de l'Iphone par trimestre en Python :vente Iphone

    À partir d'un fichier data.dat de type : Semestre,Chiffre

    #!/usr/bin/env python3
    ###galenterie d'usage
    import matplotlib.pyplot as plt
    import numpy as np
    ####lecture donnees
    with open("data.dat", "r") as f:
     donnees = f.readlines()
     million = []
     trimestre = []
     for ligne in donnees[1:]:
     txt = ligne.split(",") 
     million.append(txt[1])
     trimestre.append(txt[0])
    ####passage vers matplotlib/numpy
    million = np.array(million)
    million = million.astype(np.float)
    ####calcul du cumul
    millionc = np.zeros(len(million))
    millionc[0]=million[0]
    for i in range(1,len(donnees)-1):
     millionc[i] = millionc[i-1]+million[i]
    ####graphique
    x = np.arange(len(million))
    rects1=plt.bar(x, millionc, width=1 , align='center')
    rects2=plt.bar(x, million, width=1 , align='center', color='red')
    plt.xticks( x , (trimestre))
    plt.xlabel('Mois')
    plt.ylabel('Millions')
    plt.title('Ventes de l\'Iphone')
    def autolabel(rects):
     # legendes
     for rect in rects:
     height = rect.get_height()
     plt.text(rect.get_x()+rect.get_width()/2., 1.0*height, '%d'%int(height),
     ha='center', va='bottom')
    autolabel(rects1)
    autolabel(rects2)
    plt.legend( (rects1[0], rects2[0]), ('Ventes cumulées', 'Ventes mensuelles'),loc = 2 )
    plt.show()

    Si quelqu'un a une idée pour avoir une légende visible ...

  • [^] # Re: En javascript

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Je ne sais pas, peut être qu'il se nourrit de lumière ;-)

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 6.

    Je ne suis pas fan des aplats gris, mais une fois passé à un autre thème, ggplot2 permet vraiment de faire de beaux graphes assez rapidement (à condition de bien préparer ses données).
    Il y a de bons exemples ici

    Version rapide avec gglot2 sous R.

     library("ggplot2")
     data <- read.csv("~/Downloads/hum-pop.csv")
     # On simplifie les noms de colonne (en particulier on élimine les espaces)
     names(data) <- c("Year", "Population")
     p <- ggplot(data=data, aes(x=Year, y=Population)) +
     geom_line() + # on veut une ligne
     geom_point() + # et les points
     ggtitle("Human population (Hyde 2007)") +
     theme_bw() # thème sans aplat gris
     print(p) # on affiche le graphe
    

    Population ggplot

    Puis la version logarithmique:

     # on passe à l'échelle log10 et on reformate un peu l'affichage
     q <- p +
     scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
     labels = trans_format("log10", math_format(10^.x)))
     print(q)
    

    Population ggplot log

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Les aplats de gris permettent surtout d’appuyer l’importance des données par rapport aux éléments connexes (axes et grilles). Maintenant, l’apparence de ggplot2 est aisément configurable, et l’installation de base fourni les thèmes classic ou bw qui n’utilisent pas ce gris.

  • [^] # Re: En javascript

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    faut bien qu'ils mangent c'est brave gens :)

    Il faut que je me mette vraiment à développer du libre, ça permet de ne plus devoir manger visiblement. Est-ce que Stallman peu t confirmer ?

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • [^] # Re: R

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Il faut peut-être que tu insistes un peu ? Je suis passé par cette phase aussi, mais autant au niveau de l'expressivité que du rendu, je trouve maintenant que c'est mille fois mieux que le système traditionnel.

  • [^] # Re: R

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Mouais, je n'ai jamais été convaincu par ggplot2, et encore moins par lattice. L'utilisation d'aplats de gris et l'"innovation" graphique font peut-être un peu plus moderne, mais je trouve qu'on y perd énormément en simplicité.

  • [^] # Re: R

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3.

    Un utilisateur plus expérimenté de R utiliserait presque certainement le package ggplot2 plutôt que les mécanismes par défaut, qui sont un peu datés. Au niveau UI, ça s'utilise à peu près comme pandas, qui en est fortement inspiré je crois.

  • [^] # Re: Libre office - API?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 6.

    Pas besoin de cliquer sur un élément pour le modifier, une fois le graphique en mode édition il y une barre d'outils avec une liste déroulante des éléments modifiables. Il suffit de choisir puis cliquer sur le bouton juste à coté pour modifier l'objet sélectionné.

  • [^] # Re: En javascript

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1. Dernière modification le 17 mai 2015 à 17:05.

    J'aime bien highcharts (http://www.highcharts.com/) qui permet de faire de très jolie chose très facilement... mais j'imagine que la double licence ne vous plaira pas (faut bien qu'ils mangent c'est brave gens :))

  • # Et Gnuplot ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 3. Dernière modification le 17 mai 2015 à 15:27.

    Je suis un un poil surpris que personne ne parle de gnuplot ... Je n'en suis pas un expert mais ça rend plutôt bien avec le style w line :

    set xlabel 'Year'
    set title 'Human Population'
    plot 'data.txt' u 1:2 w line title 'Population (Hyde 2007)'
    et on peut ajouter

    set logscale
    

    Human Population with Gnuplot

  • [^] # Re: En javascript

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    Ça à l'air de d'avoir pris pas mal de temps tous ces tests en tout cas. Bizarrement, la présentation semble plus sympa que sous LO ou Calligra avec les grapheurs javascripts.

  • # En javascript

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    Dans le même style, oumph bosse sur une comparaison des grapheurs javascript, pour un choisir un pour les statistiques de LinuxFr.org. La dépêche est en cours de rédaction. Là aussi, on peut voir qu'il y a beaucoup de solutions, mais rien d'idéal : ça dépend des besoins et du temps que l'on prêt à y consacrer.

  • [^] # Re: Quelle est la question ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 0.

    Hello !

    Je souhaite simplement voir comment ça évolue dans le temps

    Justement, je pense que le graphique XY est hyper trompeur, même avec un logarithme.

    Il serait peut-être intéressant de voir avec des mini-charts ce qui est explorable, en superposant ça à la courbe globale.

    Encore une fois, je ne suis pas calé en dataviz, mais à mon avis, ton soucis est que l'outil "de base" ne peut pas répondre à la question "de base". C'est pourquoi j'en demandais un peu plus ;)

    Matricule 23415

  • [^] # Re: Quelle est la question ?

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    Je crois avoir déjà répondu à ça dans le journal :

    Je m'intéresse ici à l'évolution de la population humaine de -10 000 AEC à 2010 EC

    Je souhaite simplement voir comment ça évolue dans le temps. C'est assez simple. J'en ai simplement profité pour voir comment produire un graphique de type XY se fait dans un tableur.

  • # Quelle est la question ?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 1.

    Hello !

    L'idée étant de voir le résultat par défaut obtenu, puis d'essayer d'améliorer ça, et de conclure.

    [disclaimer: je ne suis la dataviz que de très très loin]

    Quelle est la question à laquelle tu cherche à répondre (ou le problème à représenter) ? Parce qu'en fait, ce n'est peut-être juste pas le bon graphique ?

    Ça ne me semblerait pas déconnant qu'un résultat par "défaut" ne corresponde absolument pas à des besoins concrets.

    Matricule 23415

  • [^] # Re: Libre office - API?

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    Non, mais tu peux essayer ;)

    J'ai plus l'impression que c'est pour développer des extensions à l'origine.

  • [^] # Re: R

    Posté par (site web personnel) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 4.

    Merci bien !

  • # Libre office - API?

    Posté par . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 2.

    LibreOffice Calc fait mieux, mais devoir cliquer sur un élément du graphique pour en changer les propriétés, c'est pas une bonne idée (cliquer sur des lignes c'est assez navrant).

    As-tu essayé via l'API? Oui, LibreOffice est une application de type WYSWYG mais elle peut être contrôlée par script. En plus la version 4.x offre un accès Python.

  • # R

    Posté par (Mastodon) . En réponse au journal Faire des graphiques à partir de données : comparaison. Évalué à 8.

    Sans trop essayer de le rendre beau, voici ce que ça donne dans R (je suis loin d'être un spécialiste de R, j'ai deux faire deux tutos ou un truc comme ça ;-) par contre j'ai vu de jolies images faites par d'autres) :

    data <- read.csv("~/Téléchargements/hum-pop.csv")
    plot(data, type='b', main="Human population")
    plot(data, type='b', log='y', main="Human population (log)")
    

    Version linéaire

    Version logarithmique

    Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.