{"id":13213,"date":"2022-09-18T20:13:53","date_gmt":"2022-09-18T20:13:53","guid":{"rendered":"https:\/\/introspect.ca\/blog\/plotcreator-and-plotcreatorbasic-components-in-pinetree-software\/"},"modified":"2026-07-04T14:27:17","modified_gmt":"2026-07-04T14:27:17","slug":"plotcreator-and-plotcreatorbasic-components-in-pinetree-software","status":"publish","type":"blogposts","link":"https:\/\/introspect.ca\/fr\/blog\/plotcreator-and-plotcreatorbasic-components-in-pinetree-software\/","title":{"rendered":"Pourquoi avons-nous cr\u00e9\u00e9 les composants \u00ab PlotCreator \u00bb et \u00ab PlotCreatorBasic \u00bb dans le logiciel Pinetree ?"},"content":{"rendered":"<p><a href=\"https:\/\/introspect.ca\/fr\/product\/pinetree\/\" target=\"_blank\" rel=\"noopener\">Le logiciel Pinetree<\/a> est un environnement d\u2019automatisation tr\u00e8s puissant qui s\u2019appuie sur le langage de programmation Python. Cela signifie que divers modules Python peuvent \u00eatre import\u00e9s dans Pinetree, et c\u2019est exactement ce qu\u2019a fait l\u2019\u00e9quipe <a href=\"https:\/\/introspect.ca\/fr\/\">d\u2019Introspect Technology<\/a>. Plut\u00f4t que de vous imposer la t\u00e2che d\u2019importer vous-m\u00eames ces modules Python, nous l\u2019avons fait pour vous ! Et il n\u2019y a sans doute pas de meilleur exemple que Matplotlib. Cette biblioth\u00e8que est un outil puissant qui permet le calcul scientifique. Cependant, son utilisation peut parfois sembler intimidante. C\u2019est pourquoi Introspect Technology l\u2019a non seulement import\u00e9e automatiquement dans notre logiciel, mais a \u00e9galement cr\u00e9\u00e9 des outils de tra\u00e7age de haut niveau s\u2019appuyant sur celle-ci. Poursuivez votre lecture pour en savoir plus.       <\/p>\n<h2>Logiciels destin\u00e9s aux ing\u00e9nieurs en \u00e9lectronique<\/h2>\n<p>L&rsquo;un des grands principes du logiciel Pinetree est qu&rsquo;il est destin\u00e9 \u00e0 \u00eatre utilis\u00e9 par des ing\u00e9nieurs d&rsquo;essais, des ing\u00e9nieurs de validation et des ing\u00e9nieurs en mat\u00e9riel. Imaginez que vous souhaitiez tracer la r\u00e9ponse en fr\u00e9quence d&rsquo;un filtre, comme sur la figure suivante : <\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5096 size-full\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image002.png\" alt=\"Logiciel Introspect ESP\" width=\"640\" height=\"480\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image002.png 640w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image002-300x225.png 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image002-600x450.png 600w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 1 :<\/strong> Exemple de graphique de mesure qu&rsquo;un ing\u00e9nieur d&rsquo;essais pourrait souhaiter g\u00e9n\u00e9rer<\/p>\n<p>&nbsp;<\/p>\n<p>Dans l&rsquo;id\u00e9al, l&rsquo;ing\u00e9nieur re\u00e7oit simplement un tableau de valeurs x et un tableau de valeurs y, qui sont ensuite repr\u00e9sent\u00e9s graphiquement. Nous ne voulons pas que l&rsquo;ing\u00e9nieur ait \u00e0 se soucier de la syntaxe d&rsquo;importation de biblioth\u00e8ques telles que <a href=\"https:\/\/numpy.org\/\" target=\"_blank\" rel=\"noopener\">NumPy<\/a> et <a href=\"https:\/\/matplotlib.org\/\" target=\"_blank\" rel=\"noopener\">Matplotlib<\/a>. C&rsquo;est pourquoi nous cr\u00e9ons le composant \u00ab PlotCreatorBasic \u00bb et le composant plus avanc\u00e9 \u00ab PlotCreator \u00bb.  <\/p>\n<p>&nbsp;<\/p>\n<h2>Les composants \u00ab PlotCreatorBasic \u00bb et \u00ab PlotCreator \u00bb du logiciel Pinetree<\/h2>\n<h3>PlotCreatorBasic<\/h3>\n<p>Par d\u00e9faut, ce composant g\u00e9n\u00e8re un graphique lin\u00e9aire \u00e0 partir des listes d\u00e9finies dans les attributs xValues et yValues. Par exemple, vous pouvez d\u00e9clarer les variables suivantes dans la proc\u00e9dure de test : <\/p>\n<pre>myXValues = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<\/pre>\n<pre>myYValues = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]<\/pre>\n<p>Il vous suffit ensuite d&rsquo;associer ces deux listes aux attributs xValues et yValues du composant PlotCreatorBasic en modifiant son tableau de propri\u00e9t\u00e9s. Ajoutez ensuite la commande suivante dans la proc\u00e9dure de test : <\/p>\n<pre>plotCreatorBasic.run()<\/pre>\n<p>On obtient ainsi un graphique similaire \u00e0 celui pr\u00e9sent\u00e9 dans la figure suivante.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5104 size-full\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001.png\" alt=\"Logiciel Introspect ESP\" width=\"640\" height=\"480\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001.png 640w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-300x225.png 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-600x450.png 600w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 2 :<\/strong> R\u00e9sultat de l&rsquo;ex\u00e9cution de la fonction `plotCreatorBasic.run()` sur les deux listes ci-dessus<\/p>\n<h3 style=\"text-align: center;\"><\/h3>\n<p>Il est facile d&rsquo;affiner le graphique g\u00e9n\u00e9r\u00e9 en ajoutant des \u00e9tiquettes sur les axes x et y. Il s&rsquo;agit simplement de cha\u00eenes de texte que vous ins\u00e9rez dans les attributs correspondants du tableau des propri\u00e9t\u00e9s du composant. La figure suivante pr\u00e9sente un exemple de graphique obtenu.  <\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5109 size-full\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-1.png\" alt=\"Logiciel Introspect ESP\" width=\"640\" height=\"480\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-1.png 640w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-1-300x225.png 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-1-600x450.png 600w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 3 :<\/strong> Ajout d&rsquo;\u00e9tiquettes sur les axes x et y<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>PlotCreator<\/h3>\n<p>Le composant PlotCreator est une version plus avanc\u00e9e du composant PlotCreatorBasic ; il permet de tracer plusieurs ensembles de donn\u00e9es et offre un contr\u00f4le pr\u00e9cis sur la largeur des courbes, les couleurs et les styles. Par exemple, imaginez que vous disposiez de plusieurs r\u00e9sultats de mesure de r\u00e9ponse en fr\u00e9quence et que vous souhaitiez les synth\u00e9tiser en un seul graphique ? Le composant PlotCreator vous permet d\u2019y parvenir en une seule commande. Il fournit un conteneur de code dans lequel vous pouvez d\u00e9finir des variables de jeux de donn\u00e9es, puis manipuler leurs trac\u00e9s. La figure suivante pr\u00e9sente un exemple de graphique de r\u00e9sultats.    <\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5113 size-full\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image007.png\" alt=\"Logiciel Introspect ESP\" width=\"640\" height=\"480\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image007.png 640w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image007-300x225.png 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image007-600x450.png 600w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 4 :<\/strong> Utilisation de PlotCreator pour g\u00e9n\u00e9rer des graphiques scientifiques plus complexes<\/p>\n<p>&nbsp;<\/p>\n<p>L&rsquo;un des atouts du composant PlotCreator r\u00e9side dans sa capacit\u00e9 \u00e0 parcourir des ensembles de donn\u00e9es \u00e0 l&rsquo;aide de boucles \u00ab for \u00bb ou d&rsquo;autres utilitaires de bouclage Python. Imaginons, par exemple, que vous ayez obtenu une forme d&rsquo;onde \u00e0 l&rsquo;aide du composant Introspect AnalogCapture et que vous souhaitiez d\u00e9sormais convertir cette forme d&rsquo;onde en diagramme en \u0153il. Le composant PlotCreator peut \u00eatre utilis\u00e9 pour parcourir en boucle le nombre d\u2019intervalles unitaires que vous avez captur\u00e9s, afin de cr\u00e9er un diagramme en \u0153il. La figure suivante repr\u00e9sente un motif num\u00e9rique de 20 bits obtenu \u00e0 l\u2019aide d\u2019AnalogCapture.   <\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5117 size-large\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture-1024x528.jpg\" alt=\"Forme d'onde analogique que nous souhaitons convertir en diagramme en \u0153il\" width=\"640\" height=\"330\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture-1024x528.jpg 1024w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture-300x155.jpg 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture-768x396.jpg 768w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture-600x309.jpg 600w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/Screenshot-analog-capture.jpg 1312w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 5 :<\/strong> Forme d&rsquo;onde analogique que nous souhaitons convertir en diagramme en \u0153il<\/p>\n<p>&nbsp;<\/p>\n<p>\u00c0 pr\u00e9sent, il vous suffit de remodeler la forme d&rsquo;onde pour obtenir un ensemble de vingt formes d&rsquo;onde. Ins\u00e9rez ensuite le code suivant dans l&rsquo;\u00e9diteur de code de PlotCreator : <\/p>\n<pre>xvals = delays[4][0:32]\nfor i in range(20) :\n  myArray = myVoltages[4]\n  yValues = myArray[i,:]\n  dataSet1 = SvtPlotDataSet(xvals, myArray[i,:])\n  dataSet1.setLineStyle(':', 2)\n  dataSet1.setColor('purple')\n  plotA.addDataSet(dataSet1)<\/pre>\n<p>&nbsp;<\/p>\n<p>On obtient ainsi le diagramme en \u0153il repr\u00e9sent\u00e9 sur la figure suivante.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5119 size-full\" src=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-2.png\" alt=\"PlotCreator\" width=\"800\" height=\"600\" srcset=\"https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-2.png 800w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-2-300x225.png 300w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-2-768x576.png 768w, https:\/\/introspect.ca\/wp-content\/uploads\/2022\/09\/image001-2-600x450.png 600w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: center;\"><strong>Figure 6 :<\/strong> Diagramme en \u0153il g\u00e9n\u00e9r\u00e9 \u00e0 l&rsquo;aide de PlotCreator<\/p>\n<p>&nbsp;<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Dans cet article de blog, nous vous pr\u00e9sentons les composants PlotCreatorBasic et PlotCreator. Il s&rsquo;agit de classes de composants Python de haut niveau tr\u00e8s performantes qui permettent de cr\u00e9er des graphiques de calcul scientifique sophistiqu\u00e9s sans avoir \u00e0 passer du temps \u00e0 comprendre la syntaxe des modules Python. <\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\">\n","protected":false},"excerpt":{"rendered":"<p>Les composants PlotCreator et PlotCreatorBasic sont des outils puissants qui permettent de cr\u00e9er de superbes visualisations de donn\u00e9es issues du calcul scientifique.<\/p>\n","protected":false},"author":9,"featured_media":5089,"menu_order":0,"template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-13213","blogposts","type-blogposts","status-publish","has-post-thumbnail","hentry","blog_topics-defis-de-lindustrie","blog_tags-matplotlib","blog_tags-python","blog_tags-calcul-scientifique"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/blogposts\/13213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/blogposts"}],"about":[{"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/types\/blogposts"}],"author":[{"embeddable":true,"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/users\/9"}],"version-history":[{"count":1,"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/blogposts\/13213\/revisions"}],"predecessor-version":[{"id":13216,"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/blogposts\/13213\/revisions\/13216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/media\/5089"}],"wp:attachment":[{"href":"https:\/\/introspect.ca\/fr\/wp-json\/wp\/v2\/media?parent=13213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}