[{"data":1,"prerenderedAt":2481},["ShallowReactive",2],{"docs:\u002Ftutorials\u002Fline-chart":3},{"id":4,"title":5,"body":6,"description":2471,"extension":2472,"meta":2473,"navigation":2475,"path":2477,"seo":2478,"stem":2479,"__hash__":2480},"docs\u002Ftutorials\u002Fline-chart.md","Line Chart",{"type":7,"value":8,"toc":2463},"minimark",[9,13,22,25,53,58,219,223,612,616,626,1078,1082,1345,1350,1354,1365,2135,2139,2455,2459],[10,11,5],"h1",{"id":12},"line-chart",[14,15,16,17,21],"p",{},"This tutorial creates a multi-series line chart from generated data. It uses\n",[18,19,20],"code",{},"Noise"," for smooth fake values, scales for positioning, markers for ticks, and\nutility functions for label and tick placement.",[14,23,24],{},"The data setup uses optional packages:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-bash shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark","pip install polars pendulum\n","bash","",[18,33,34],{"__ignoreMap":31},[35,36,39,43,47,50],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"sp6cl","pip",[35,44,46],{"class":45},"s_jvP"," install",[35,48,49],{"class":45}," polars",[35,51,52],{"class":45}," pendulum\n",[54,55,57],"h2",{"id":56},"imports","Imports",[26,59,63],{"className":60,"code":61,"language":62,"meta":31,"style":31},"language-python shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark","import pendulum\nimport polars as pl\nimport pydreamplet as dp\n\nfrom pydreamplet.colors import generate_colors\nfrom pydreamplet.markers import Marker, TICK_BOTTOM\nfrom pydreamplet.noise import Noise\nfrom pydreamplet.scales import LinearScale, PointScale\nfrom pydreamplet.utils import calculate_ticks, force_distance, sample_uniform\n","python",[18,64,65,74,88,101,108,129,153,170,192],{"__ignoreMap":31},[35,66,67,71],{"class":37,"line":38},[35,68,70],{"class":69},"sED7I","import",[35,72,52],{"class":73},"soTeR",[35,75,77,79,82,85],{"class":37,"line":76},2,[35,78,70],{"class":69},[35,80,81],{"class":73}," polars ",[35,83,84],{"class":69},"as",[35,86,87],{"class":73}," pl\n",[35,89,91,93,96,98],{"class":37,"line":90},3,[35,92,70],{"class":69},[35,94,95],{"class":73}," pydreamplet ",[35,97,84],{"class":69},[35,99,100],{"class":73}," dp\n",[35,102,104],{"class":37,"line":103},4,[35,105,107],{"emptyLinePlaceholder":106},true,"\n",[35,109,111,114,117,121,124,126],{"class":37,"line":110},5,[35,112,113],{"class":69},"from",[35,115,116],{"class":73}," pydreamplet",[35,118,120],{"class":119},"sVsmf",".",[35,122,123],{"class":73},"colors ",[35,125,70],{"class":69},[35,127,128],{"class":73}," generate_colors\n",[35,130,132,134,136,138,141,143,146,149],{"class":37,"line":131},6,[35,133,113],{"class":69},[35,135,116],{"class":73},[35,137,120],{"class":119},[35,139,140],{"class":73},"markers ",[35,142,70],{"class":69},[35,144,145],{"class":73}," Marker",[35,147,148],{"class":119},",",[35,150,152],{"class":151},"sXSbw"," TICK_BOTTOM\n",[35,154,156,158,160,162,165,167],{"class":37,"line":155},7,[35,157,113],{"class":69},[35,159,116],{"class":73},[35,161,120],{"class":119},[35,163,164],{"class":73},"noise ",[35,166,70],{"class":69},[35,168,169],{"class":73}," Noise\n",[35,171,173,175,177,179,182,184,187,189],{"class":37,"line":172},8,[35,174,113],{"class":69},[35,176,116],{"class":73},[35,178,120],{"class":119},[35,180,181],{"class":73},"scales ",[35,183,70],{"class":69},[35,185,186],{"class":73}," LinearScale",[35,188,148],{"class":119},[35,190,191],{"class":73}," PointScale\n",[35,193,195,197,199,201,204,206,209,211,214,216],{"class":37,"line":194},9,[35,196,113],{"class":69},[35,198,116],{"class":73},[35,200,120],{"class":119},[35,202,203],{"class":73},"utils ",[35,205,70],{"class":69},[35,207,208],{"class":73}," calculate_ticks",[35,210,148],{"class":119},[35,212,213],{"class":73}," force_distance",[35,215,148],{"class":119},[35,217,218],{"class":73}," sample_uniform\n",[54,220,222],{"id":221},"generate-data","Generate Data",[26,224,226],{"className":60,"code":225,"language":62,"meta":31,"style":31},"products = [\"bicycle\", \"apple\", \"ham\", \"spoon\", \"boat\", \"starship\"]\n\ndata = {}\nfor index, product in enumerate(products):\n    noise = Noise(0, 250, 0.1, seed=index + 1)\n    data[product] = [noise.int_value for _ in range(100)]\n\nstart_date = pendulum.date(2024, 7, 1)\nend_date = start_date.add(days=99)\n\ndf = pl.DataFrame(data).with_columns(\n    date=pl.date_range(start_date, end_date, interval=\"1d\", eager=True)\n).select([\"date\", *products])\n",[18,227,228,298,302,312,342,388,435,439,470,497,502,532,585],{"__ignoreMap":31},[35,229,230,233,237,240,244,247,249,251,254,257,259,261,263,266,268,270,272,275,277,279,281,284,286,288,290,293,295],{"class":37,"line":38},[35,231,232],{"class":73},"products ",[35,234,236],{"class":235},"sWKEy","=",[35,238,239],{"class":119}," [",[35,241,243],{"class":242},"sqo_7","\"",[35,245,246],{"class":45},"bicycle",[35,248,243],{"class":242},[35,250,148],{"class":119},[35,252,253],{"class":242}," \"",[35,255,256],{"class":45},"apple",[35,258,243],{"class":242},[35,260,148],{"class":119},[35,262,253],{"class":242},[35,264,265],{"class":45},"ham",[35,267,243],{"class":242},[35,269,148],{"class":119},[35,271,253],{"class":242},[35,273,274],{"class":45},"spoon",[35,276,243],{"class":242},[35,278,148],{"class":119},[35,280,253],{"class":242},[35,282,283],{"class":45},"boat",[35,285,243],{"class":242},[35,287,148],{"class":119},[35,289,253],{"class":242},[35,291,292],{"class":45},"starship",[35,294,243],{"class":242},[35,296,297],{"class":119},"]\n",[35,299,300],{"class":37,"line":76},[35,301,107],{"emptyLinePlaceholder":106},[35,303,304,307,309],{"class":37,"line":90},[35,305,306],{"class":73},"data ",[35,308,236],{"class":235},[35,310,311],{"class":119}," {}\n",[35,313,314,317,320,322,325,328,332,335,339],{"class":37,"line":103},[35,315,316],{"class":69},"for",[35,318,319],{"class":73}," index",[35,321,148],{"class":119},[35,323,324],{"class":73}," product ",[35,326,327],{"class":69},"in",[35,329,331],{"class":330},"sBTIf"," enumerate",[35,333,334],{"class":119},"(",[35,336,338],{"class":337},"sAK04","products",[35,340,341],{"class":119},"):\n",[35,343,344,347,349,352,354,358,360,363,365,368,370,374,376,379,382,385],{"class":37,"line":110},[35,345,346],{"class":73},"    noise ",[35,348,236],{"class":235},[35,350,351],{"class":337}," Noise",[35,353,334],{"class":119},[35,355,357],{"class":356},"sNpir","0",[35,359,148],{"class":119},[35,361,362],{"class":356}," 250",[35,364,148],{"class":119},[35,366,367],{"class":356}," 0.1",[35,369,148],{"class":119},[35,371,373],{"class":372},"sYEV4"," seed",[35,375,236],{"class":235},[35,377,378],{"class":337},"index ",[35,380,381],{"class":235},"+",[35,383,384],{"class":356}," 1",[35,386,387],{"class":119},")\n",[35,389,390,393,396,399,402,405,407,410,412,416,419,422,424,427,429,432],{"class":37,"line":131},[35,391,392],{"class":73},"    data",[35,394,395],{"class":119},"[",[35,397,398],{"class":73},"product",[35,400,401],{"class":119},"]",[35,403,404],{"class":235}," =",[35,406,239],{"class":119},[35,408,409],{"class":73},"noise",[35,411,120],{"class":119},[35,413,415],{"class":414},"sm80-","int_value",[35,417,418],{"class":69}," for",[35,420,421],{"class":73}," _ ",[35,423,327],{"class":69},[35,425,426],{"class":330}," range",[35,428,334],{"class":119},[35,430,431],{"class":356},"100",[35,433,434],{"class":119},")]\n",[35,436,437],{"class":37,"line":155},[35,438,107],{"emptyLinePlaceholder":106},[35,440,441,444,446,449,451,454,456,459,461,464,466,468],{"class":37,"line":172},[35,442,443],{"class":73},"start_date ",[35,445,236],{"class":235},[35,447,448],{"class":73}," pendulum",[35,450,120],{"class":119},[35,452,453],{"class":337},"date",[35,455,334],{"class":119},[35,457,458],{"class":356},"2024",[35,460,148],{"class":119},[35,462,463],{"class":356}," 7",[35,465,148],{"class":119},[35,467,384],{"class":356},[35,469,387],{"class":119},[35,471,472,475,477,480,482,485,487,490,492,495],{"class":37,"line":194},[35,473,474],{"class":73},"end_date ",[35,476,236],{"class":235},[35,478,479],{"class":73}," start_date",[35,481,120],{"class":119},[35,483,484],{"class":337},"add",[35,486,334],{"class":119},[35,488,489],{"class":372},"days",[35,491,236],{"class":235},[35,493,494],{"class":356},"99",[35,496,387],{"class":119},[35,498,500],{"class":37,"line":499},10,[35,501,107],{"emptyLinePlaceholder":106},[35,503,505,508,510,513,515,518,520,523,526,529],{"class":37,"line":504},11,[35,506,507],{"class":73},"df ",[35,509,236],{"class":235},[35,511,512],{"class":73}," pl",[35,514,120],{"class":119},[35,516,517],{"class":337},"DataFrame",[35,519,334],{"class":119},[35,521,522],{"class":337},"data",[35,524,525],{"class":119},").",[35,527,528],{"class":337},"with_columns",[35,530,531],{"class":119},"(\n",[35,533,535,538,540,543,545,548,550,553,555,558,560,563,565,567,570,572,574,577,579,583],{"class":37,"line":534},12,[35,536,537],{"class":372},"    date",[35,539,236],{"class":235},[35,541,542],{"class":337},"pl",[35,544,120],{"class":119},[35,546,547],{"class":337},"date_range",[35,549,334],{"class":119},[35,551,552],{"class":337},"start_date",[35,554,148],{"class":119},[35,556,557],{"class":337}," end_date",[35,559,148],{"class":119},[35,561,562],{"class":372}," interval",[35,564,236],{"class":235},[35,566,243],{"class":242},[35,568,569],{"class":45},"1d",[35,571,243],{"class":242},[35,573,148],{"class":119},[35,575,576],{"class":372}," eager",[35,578,236],{"class":235},[35,580,582],{"class":581},"sTy78","True",[35,584,387],{"class":119},[35,586,588,590,593,596,598,600,602,604,607,609],{"class":37,"line":587},13,[35,589,525],{"class":119},[35,591,592],{"class":337},"select",[35,594,595],{"class":119},"([",[35,597,243],{"class":242},[35,599,453],{"class":45},[35,601,243],{"class":242},[35,603,148],{"class":119},[35,605,606],{"class":235}," *",[35,608,338],{"class":337},[35,610,611],{"class":119},"])\n",[54,613,615],{"id":614},"canvas-and-scales","Canvas and Scales",[14,617,618,621,622,625],{},[18,619,620],{},"PointScale.map()"," returns ",[18,623,624],{},"float | None"," because a requested domain value may\nbe missing. Here every date comes from the scale domain, so the assertion is\nboth valid and useful for type checkers.",[26,627,629],{"className":60,"code":628,"language":62,"meta":31,"style":31},"svg = dp.SVG(800, 400)\ndefs = svg.ensure_defs()\naxis_layer = dp.G()\nsvg.append(axis_layer)\n\nmargin = {\"left\": 50, \"right\": 105, \"top\": 18, \"bottom\": 50}\ndates = df[\"date\"].to_list()\n\nmin_value = df.select(products).min_horizontal().min()\nmax_value = df.select(products).max_horizontal().max()\n\nscale_x = PointScale(dates, (margin[\"left\"], svg.w - margin[\"right\"]))\nscale_y = LinearScale((min_value, max_value), (svg.h - margin[\"bottom\"], margin[\"top\"]))\n\nx_values = []\nfor date in dates:\n    x = scale_x.map(date)\n    assert x is not None\n    x_values.append(x)\n",[18,630,631,658,676,692,709,713,780,806,810,840,869,873,931,989,994,1005,1021,1043,1061],{"__ignoreMap":31},[35,632,633,636,638,641,643,646,648,651,653,656],{"class":37,"line":38},[35,634,635],{"class":73},"svg ",[35,637,236],{"class":235},[35,639,640],{"class":73}," dp",[35,642,120],{"class":119},[35,644,645],{"class":337},"SVG",[35,647,334],{"class":119},[35,649,650],{"class":356},"800",[35,652,148],{"class":119},[35,654,655],{"class":356}," 400",[35,657,387],{"class":119},[35,659,660,663,665,668,670,673],{"class":37,"line":76},[35,661,662],{"class":73},"defs ",[35,664,236],{"class":235},[35,666,667],{"class":73}," svg",[35,669,120],{"class":119},[35,671,672],{"class":337},"ensure_defs",[35,674,675],{"class":119},"()\n",[35,677,678,681,683,685,687,690],{"class":37,"line":90},[35,679,680],{"class":73},"axis_layer ",[35,682,236],{"class":235},[35,684,640],{"class":73},[35,686,120],{"class":119},[35,688,689],{"class":337},"G",[35,691,675],{"class":119},[35,693,694,697,699,702,704,707],{"class":37,"line":103},[35,695,696],{"class":73},"svg",[35,698,120],{"class":119},[35,700,701],{"class":337},"append",[35,703,334],{"class":119},[35,705,706],{"class":337},"axis_layer",[35,708,387],{"class":119},[35,710,711],{"class":37,"line":110},[35,712,107],{"emptyLinePlaceholder":106},[35,714,715,718,720,723,725,728,730,733,736,738,740,743,745,747,750,752,754,757,759,761,764,766,768,771,773,775,777],{"class":37,"line":131},[35,716,717],{"class":73},"margin ",[35,719,236],{"class":235},[35,721,722],{"class":119}," {",[35,724,243],{"class":242},[35,726,727],{"class":45},"left",[35,729,243],{"class":242},[35,731,732],{"class":119},":",[35,734,735],{"class":356}," 50",[35,737,148],{"class":119},[35,739,253],{"class":242},[35,741,742],{"class":45},"right",[35,744,243],{"class":242},[35,746,732],{"class":119},[35,748,749],{"class":356}," 105",[35,751,148],{"class":119},[35,753,253],{"class":242},[35,755,756],{"class":45},"top",[35,758,243],{"class":242},[35,760,732],{"class":119},[35,762,763],{"class":356}," 18",[35,765,148],{"class":119},[35,767,253],{"class":242},[35,769,770],{"class":45},"bottom",[35,772,243],{"class":242},[35,774,732],{"class":119},[35,776,735],{"class":356},[35,778,779],{"class":119},"}\n",[35,781,782,785,787,790,792,794,796,798,801,804],{"class":37,"line":155},[35,783,784],{"class":73},"dates ",[35,786,236],{"class":235},[35,788,789],{"class":73}," df",[35,791,395],{"class":119},[35,793,243],{"class":242},[35,795,453],{"class":45},[35,797,243],{"class":242},[35,799,800],{"class":119},"].",[35,802,803],{"class":337},"to_list",[35,805,675],{"class":119},[35,807,808],{"class":37,"line":172},[35,809,107],{"emptyLinePlaceholder":106},[35,811,812,815,817,819,821,823,825,827,829,832,835,838],{"class":37,"line":194},[35,813,814],{"class":73},"min_value ",[35,816,236],{"class":235},[35,818,789],{"class":73},[35,820,120],{"class":119},[35,822,592],{"class":337},[35,824,334],{"class":119},[35,826,338],{"class":337},[35,828,525],{"class":119},[35,830,831],{"class":337},"min_horizontal",[35,833,834],{"class":119},"().",[35,836,837],{"class":337},"min",[35,839,675],{"class":119},[35,841,842,845,847,849,851,853,855,857,859,862,864,867],{"class":37,"line":499},[35,843,844],{"class":73},"max_value ",[35,846,236],{"class":235},[35,848,789],{"class":73},[35,850,120],{"class":119},[35,852,592],{"class":337},[35,854,334],{"class":119},[35,856,338],{"class":337},[35,858,525],{"class":119},[35,860,861],{"class":337},"max_horizontal",[35,863,834],{"class":119},[35,865,866],{"class":337},"max",[35,868,675],{"class":119},[35,870,871],{"class":37,"line":504},[35,872,107],{"emptyLinePlaceholder":106},[35,874,875,878,880,883,885,888,890,893,896,898,900,902,904,907,909,911,914,917,920,922,924,926,928],{"class":37,"line":534},[35,876,877],{"class":73},"scale_x ",[35,879,236],{"class":235},[35,881,882],{"class":337}," PointScale",[35,884,334],{"class":119},[35,886,887],{"class":337},"dates",[35,889,148],{"class":119},[35,891,892],{"class":119}," (",[35,894,895],{"class":337},"margin",[35,897,395],{"class":119},[35,899,243],{"class":242},[35,901,727],{"class":45},[35,903,243],{"class":242},[35,905,906],{"class":119},"],",[35,908,667],{"class":337},[35,910,120],{"class":119},[35,912,913],{"class":414},"w",[35,915,916],{"class":235}," -",[35,918,919],{"class":337}," margin",[35,921,395],{"class":119},[35,923,243],{"class":242},[35,925,742],{"class":45},[35,927,243],{"class":242},[35,929,930],{"class":119},"]))\n",[35,932,933,936,938,940,943,946,948,951,954,956,958,960,963,965,967,969,971,973,975,977,979,981,983,985,987],{"class":37,"line":587},[35,934,935],{"class":73},"scale_y ",[35,937,236],{"class":235},[35,939,186],{"class":337},[35,941,942],{"class":119},"((",[35,944,945],{"class":337},"min_value",[35,947,148],{"class":119},[35,949,950],{"class":337}," max_value",[35,952,953],{"class":119},"),",[35,955,892],{"class":119},[35,957,696],{"class":337},[35,959,120],{"class":119},[35,961,962],{"class":414},"h",[35,964,916],{"class":235},[35,966,919],{"class":337},[35,968,395],{"class":119},[35,970,243],{"class":242},[35,972,770],{"class":45},[35,974,243],{"class":242},[35,976,906],{"class":119},[35,978,919],{"class":337},[35,980,395],{"class":119},[35,982,243],{"class":242},[35,984,756],{"class":45},[35,986,243],{"class":242},[35,988,930],{"class":119},[35,990,992],{"class":37,"line":991},14,[35,993,107],{"emptyLinePlaceholder":106},[35,995,997,1000,1002],{"class":37,"line":996},15,[35,998,999],{"class":73},"x_values ",[35,1001,236],{"class":235},[35,1003,1004],{"class":119}," []\n",[35,1006,1008,1010,1013,1015,1018],{"class":37,"line":1007},16,[35,1009,316],{"class":69},[35,1011,1012],{"class":73}," date ",[35,1014,327],{"class":69},[35,1016,1017],{"class":73}," dates",[35,1019,1020],{"class":119},":\n",[35,1022,1024,1027,1029,1032,1034,1037,1039,1041],{"class":37,"line":1023},17,[35,1025,1026],{"class":73},"    x ",[35,1028,236],{"class":235},[35,1030,1031],{"class":73}," scale_x",[35,1033,120],{"class":119},[35,1035,1036],{"class":337},"map",[35,1038,334],{"class":119},[35,1040,453],{"class":337},[35,1042,387],{"class":119},[35,1044,1046,1049,1052,1055,1058],{"class":37,"line":1045},18,[35,1047,1048],{"class":69},"    assert",[35,1050,1051],{"class":73}," x ",[35,1053,1054],{"class":235},"is",[35,1056,1057],{"class":235}," not",[35,1059,1060],{"class":581}," None\n",[35,1062,1064,1067,1069,1071,1073,1076],{"class":37,"line":1063},19,[35,1065,1066],{"class":73},"    x_values",[35,1068,120],{"class":119},[35,1070,701],{"class":337},[35,1072,334],{"class":119},[35,1074,1075],{"class":337},"x",[35,1077,387],{"class":119},[54,1079,1081],{"id":1080},"draw-the-series","Draw the Series",[26,1083,1085],{"className":60,"code":1084,"language":62,"meta":31,"style":31},"colors = generate_colors(\"#cc340c\", len(products))\nlast_points_y = []\n\nfor i, product in enumerate(products):\n    points = []\n    for j, value in enumerate(df[product].to_list()):\n        points.extend([x_values[j], scale_y.map(value)])\n\n    svg.append(\n        dp.Polyline(\n            points,\n            stroke=colors[i],\n            stroke_width=2,\n            fill=\"none\",\n        )\n    )\n    last_points_y.append(points[-1])\n",[18,1086,1087,1117,1126,1130,1151,1160,1193,1230,1234,1245,1257,1265,1283,1295,1311,1316,1321],{"__ignoreMap":31},[35,1088,1089,1091,1093,1096,1098,1100,1103,1105,1107,1110,1112,1114],{"class":37,"line":38},[35,1090,123],{"class":73},[35,1092,236],{"class":235},[35,1094,1095],{"class":337}," generate_colors",[35,1097,334],{"class":119},[35,1099,243],{"class":242},[35,1101,1102],{"class":45},"#cc340c",[35,1104,243],{"class":242},[35,1106,148],{"class":119},[35,1108,1109],{"class":330}," len",[35,1111,334],{"class":119},[35,1113,338],{"class":337},[35,1115,1116],{"class":119},"))\n",[35,1118,1119,1122,1124],{"class":37,"line":76},[35,1120,1121],{"class":73},"last_points_y ",[35,1123,236],{"class":235},[35,1125,1004],{"class":119},[35,1127,1128],{"class":37,"line":90},[35,1129,107],{"emptyLinePlaceholder":106},[35,1131,1132,1134,1137,1139,1141,1143,1145,1147,1149],{"class":37,"line":103},[35,1133,316],{"class":69},[35,1135,1136],{"class":73}," i",[35,1138,148],{"class":119},[35,1140,324],{"class":73},[35,1142,327],{"class":69},[35,1144,331],{"class":330},[35,1146,334],{"class":119},[35,1148,338],{"class":337},[35,1150,341],{"class":119},[35,1152,1153,1156,1158],{"class":37,"line":110},[35,1154,1155],{"class":73},"    points ",[35,1157,236],{"class":235},[35,1159,1004],{"class":119},[35,1161,1162,1165,1168,1170,1173,1175,1177,1179,1182,1184,1186,1188,1190],{"class":37,"line":131},[35,1163,1164],{"class":69},"    for",[35,1166,1167],{"class":73}," j",[35,1169,148],{"class":119},[35,1171,1172],{"class":73}," value ",[35,1174,327],{"class":69},[35,1176,331],{"class":330},[35,1178,334],{"class":119},[35,1180,1181],{"class":337},"df",[35,1183,395],{"class":119},[35,1185,398],{"class":337},[35,1187,800],{"class":119},[35,1189,803],{"class":337},[35,1191,1192],{"class":119},"()):\n",[35,1194,1195,1198,1200,1203,1205,1208,1210,1213,1215,1218,1220,1222,1224,1227],{"class":37,"line":155},[35,1196,1197],{"class":73},"        points",[35,1199,120],{"class":119},[35,1201,1202],{"class":337},"extend",[35,1204,595],{"class":119},[35,1206,1207],{"class":337},"x_values",[35,1209,395],{"class":119},[35,1211,1212],{"class":337},"j",[35,1214,906],{"class":119},[35,1216,1217],{"class":337}," scale_y",[35,1219,120],{"class":119},[35,1221,1036],{"class":337},[35,1223,334],{"class":119},[35,1225,1226],{"class":337},"value",[35,1228,1229],{"class":119},")])\n",[35,1231,1232],{"class":37,"line":172},[35,1233,107],{"emptyLinePlaceholder":106},[35,1235,1236,1239,1241,1243],{"class":37,"line":194},[35,1237,1238],{"class":73},"    svg",[35,1240,120],{"class":119},[35,1242,701],{"class":337},[35,1244,531],{"class":119},[35,1246,1247,1250,1252,1255],{"class":37,"line":499},[35,1248,1249],{"class":337},"        dp",[35,1251,120],{"class":119},[35,1253,1254],{"class":337},"Polyline",[35,1256,531],{"class":119},[35,1258,1259,1262],{"class":37,"line":504},[35,1260,1261],{"class":337},"            points",[35,1263,1264],{"class":119},",\n",[35,1266,1267,1270,1272,1275,1277,1280],{"class":37,"line":534},[35,1268,1269],{"class":372},"            stroke",[35,1271,236],{"class":235},[35,1273,1274],{"class":337},"colors",[35,1276,395],{"class":119},[35,1278,1279],{"class":337},"i",[35,1281,1282],{"class":119},"],\n",[35,1284,1285,1288,1290,1293],{"class":37,"line":587},[35,1286,1287],{"class":372},"            stroke_width",[35,1289,236],{"class":235},[35,1291,1292],{"class":356},"2",[35,1294,1264],{"class":119},[35,1296,1297,1300,1302,1304,1307,1309],{"class":37,"line":991},[35,1298,1299],{"class":372},"            fill",[35,1301,236],{"class":235},[35,1303,243],{"class":242},[35,1305,1306],{"class":45},"none",[35,1308,243],{"class":242},[35,1310,1264],{"class":119},[35,1312,1313],{"class":37,"line":996},[35,1314,1315],{"class":119},"        )\n",[35,1317,1318],{"class":37,"line":1007},[35,1319,1320],{"class":119},"    )\n",[35,1322,1323,1326,1328,1330,1332,1335,1337,1340,1343],{"class":37,"line":1023},[35,1324,1325],{"class":73},"    last_points_y",[35,1327,120],{"class":119},[35,1329,701],{"class":337},[35,1331,334],{"class":119},[35,1333,1334],{"class":337},"points",[35,1336,395],{"class":119},[35,1338,1339],{"class":235},"-",[35,1341,1342],{"class":356},"1",[35,1344,611],{"class":119},[1346,1347],"svg-preview",{"alt":1348,"src":1349},"Multi-series line chart before axes and labels are added.","\u002Fshowcase\u002Ftutorial_line_chart_lines.svg",[54,1351,1353],{"id":1352},"labels-and-axes","Labels and Axes",[14,1355,1356,1357,1360,1361,1364],{},"Use ",[18,1358,1359],{},"force_distance()"," to spread labels near the final data points. Use\n",[18,1362,1363],{},"sample_uniform()"," to pick a small number of date ticks from the full domain.",[26,1366,1368],{"className":60,"code":1367,"language":62,"meta":31,"style":31},"label_y_positions = force_distance(last_points_y, 16)\n\nfor i, product in enumerate(products):\n    svg.append(\n        dp.Text(\n            product,\n            x=x_values[-1] + 8,\n            y=label_y_positions[i] + 5,\n            font_size=14,\n            fill=colors[i],\n        )\n    )\n\naxis_y = scale_y.output_range[0]\naxis_layer.append(\n    dp.Line(\n        x1=margin[\"left\"],\n        y1=axis_y,\n        x2=svg.w - margin[\"right\"],\n        y2=axis_y,\n        stroke=\"currentColor\",\n        stroke_width=1,\n    )\n)\n\ntick_indices = sample_uniform(scale_x.domain, 5, None)\ntick_points = []\nfor index in tick_indices:\n    tick_points.extend([x_values[index], axis_y])\n\ntick_path = dp.Polyline(tick_points, stroke=\"none\", fill=\"none\")\naxis_layer.append(tick_path)\n\nmarker = Marker(\"bottom-tick\", TICK_BOTTOM, 10, 10, fill=\"currentColor\")\ndefs.append(marker)\ntick_path.marker_start = marker.url\ntick_path.marker_mid = marker.url\ntick_path.marker_end = marker.url\n\nfor index in tick_indices:\n    tick_date = pendulum.instance(dates[index])\n    axis_layer.append(\n        dp.Text(\n            tick_date.format(\"D MMM 'YY\"),\n            x=x_values[index],\n            y=axis_y + 30,\n            font_size=13,\n            fill=\"currentColor\",\n            text_anchor=\"middle\",\n        )\n    )\n",[18,1369,1370,1391,1395,1415,1425,1436,1443,1468,1491,1503,1517,1521,1525,1529,1549,1559,1571,1590,1602,1629,1641,1658,1670,1675,1680,1685,1717,1727,1742,1768,1773,1820,1836,1841,1888,1905,1925,1943,1961,1966,1979,2004,2016,2027,2050,2065,2081,2093,2108,2125,2130],{"__ignoreMap":31},[35,1371,1372,1375,1377,1379,1381,1384,1386,1389],{"class":37,"line":38},[35,1373,1374],{"class":73},"label_y_positions ",[35,1376,236],{"class":235},[35,1378,213],{"class":337},[35,1380,334],{"class":119},[35,1382,1383],{"class":337},"last_points_y",[35,1385,148],{"class":119},[35,1387,1388],{"class":356}," 16",[35,1390,387],{"class":119},[35,1392,1393],{"class":37,"line":76},[35,1394,107],{"emptyLinePlaceholder":106},[35,1396,1397,1399,1401,1403,1405,1407,1409,1411,1413],{"class":37,"line":90},[35,1398,316],{"class":69},[35,1400,1136],{"class":73},[35,1402,148],{"class":119},[35,1404,324],{"class":73},[35,1406,327],{"class":69},[35,1408,331],{"class":330},[35,1410,334],{"class":119},[35,1412,338],{"class":337},[35,1414,341],{"class":119},[35,1416,1417,1419,1421,1423],{"class":37,"line":103},[35,1418,1238],{"class":73},[35,1420,120],{"class":119},[35,1422,701],{"class":337},[35,1424,531],{"class":119},[35,1426,1427,1429,1431,1434],{"class":37,"line":110},[35,1428,1249],{"class":337},[35,1430,120],{"class":119},[35,1432,1433],{"class":337},"Text",[35,1435,531],{"class":119},[35,1437,1438,1441],{"class":37,"line":131},[35,1439,1440],{"class":337},"            product",[35,1442,1264],{"class":119},[35,1444,1445,1448,1450,1452,1454,1456,1458,1460,1463,1466],{"class":37,"line":155},[35,1446,1447],{"class":372},"            x",[35,1449,236],{"class":235},[35,1451,1207],{"class":337},[35,1453,395],{"class":119},[35,1455,1339],{"class":235},[35,1457,1342],{"class":356},[35,1459,401],{"class":119},[35,1461,1462],{"class":235}," +",[35,1464,1465],{"class":356}," 8",[35,1467,1264],{"class":119},[35,1469,1470,1473,1475,1478,1480,1482,1484,1486,1489],{"class":37,"line":172},[35,1471,1472],{"class":372},"            y",[35,1474,236],{"class":235},[35,1476,1477],{"class":337},"label_y_positions",[35,1479,395],{"class":119},[35,1481,1279],{"class":337},[35,1483,401],{"class":119},[35,1485,1462],{"class":235},[35,1487,1488],{"class":356}," 5",[35,1490,1264],{"class":119},[35,1492,1493,1496,1498,1501],{"class":37,"line":194},[35,1494,1495],{"class":372},"            font_size",[35,1497,236],{"class":235},[35,1499,1500],{"class":356},"14",[35,1502,1264],{"class":119},[35,1504,1505,1507,1509,1511,1513,1515],{"class":37,"line":499},[35,1506,1299],{"class":372},[35,1508,236],{"class":235},[35,1510,1274],{"class":337},[35,1512,395],{"class":119},[35,1514,1279],{"class":337},[35,1516,1282],{"class":119},[35,1518,1519],{"class":37,"line":504},[35,1520,1315],{"class":119},[35,1522,1523],{"class":37,"line":534},[35,1524,1320],{"class":119},[35,1526,1527],{"class":37,"line":587},[35,1528,107],{"emptyLinePlaceholder":106},[35,1530,1531,1534,1536,1538,1540,1543,1545,1547],{"class":37,"line":991},[35,1532,1533],{"class":73},"axis_y ",[35,1535,236],{"class":235},[35,1537,1217],{"class":73},[35,1539,120],{"class":119},[35,1541,1542],{"class":414},"output_range",[35,1544,395],{"class":119},[35,1546,357],{"class":356},[35,1548,297],{"class":119},[35,1550,1551,1553,1555,1557],{"class":37,"line":996},[35,1552,706],{"class":73},[35,1554,120],{"class":119},[35,1556,701],{"class":337},[35,1558,531],{"class":119},[35,1560,1561,1564,1566,1569],{"class":37,"line":1007},[35,1562,1563],{"class":337},"    dp",[35,1565,120],{"class":119},[35,1567,1568],{"class":337},"Line",[35,1570,531],{"class":119},[35,1572,1573,1576,1578,1580,1582,1584,1586,1588],{"class":37,"line":1023},[35,1574,1575],{"class":372},"        x1",[35,1577,236],{"class":235},[35,1579,895],{"class":337},[35,1581,395],{"class":119},[35,1583,243],{"class":242},[35,1585,727],{"class":45},[35,1587,243],{"class":242},[35,1589,1282],{"class":119},[35,1591,1592,1595,1597,1600],{"class":37,"line":1045},[35,1593,1594],{"class":372},"        y1",[35,1596,236],{"class":235},[35,1598,1599],{"class":337},"axis_y",[35,1601,1264],{"class":119},[35,1603,1604,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627],{"class":37,"line":1063},[35,1605,1606],{"class":372},"        x2",[35,1608,236],{"class":235},[35,1610,696],{"class":337},[35,1612,120],{"class":119},[35,1614,913],{"class":414},[35,1616,916],{"class":235},[35,1618,919],{"class":337},[35,1620,395],{"class":119},[35,1622,243],{"class":242},[35,1624,742],{"class":45},[35,1626,243],{"class":242},[35,1628,1282],{"class":119},[35,1630,1632,1635,1637,1639],{"class":37,"line":1631},20,[35,1633,1634],{"class":372},"        y2",[35,1636,236],{"class":235},[35,1638,1599],{"class":337},[35,1640,1264],{"class":119},[35,1642,1644,1647,1649,1651,1654,1656],{"class":37,"line":1643},21,[35,1645,1646],{"class":372},"        stroke",[35,1648,236],{"class":235},[35,1650,243],{"class":242},[35,1652,1653],{"class":45},"currentColor",[35,1655,243],{"class":242},[35,1657,1264],{"class":119},[35,1659,1661,1664,1666,1668],{"class":37,"line":1660},22,[35,1662,1663],{"class":372},"        stroke_width",[35,1665,236],{"class":235},[35,1667,1342],{"class":356},[35,1669,1264],{"class":119},[35,1671,1673],{"class":37,"line":1672},23,[35,1674,1320],{"class":119},[35,1676,1678],{"class":37,"line":1677},24,[35,1679,387],{"class":119},[35,1681,1683],{"class":37,"line":1682},25,[35,1684,107],{"emptyLinePlaceholder":106},[35,1686,1688,1691,1693,1696,1698,1701,1703,1706,1708,1710,1712,1715],{"class":37,"line":1687},26,[35,1689,1690],{"class":73},"tick_indices ",[35,1692,236],{"class":235},[35,1694,1695],{"class":337}," sample_uniform",[35,1697,334],{"class":119},[35,1699,1700],{"class":337},"scale_x",[35,1702,120],{"class":119},[35,1704,1705],{"class":414},"domain",[35,1707,148],{"class":119},[35,1709,1488],{"class":356},[35,1711,148],{"class":119},[35,1713,1714],{"class":581}," None",[35,1716,387],{"class":119},[35,1718,1720,1723,1725],{"class":37,"line":1719},27,[35,1721,1722],{"class":73},"tick_points ",[35,1724,236],{"class":235},[35,1726,1004],{"class":119},[35,1728,1730,1732,1735,1737,1740],{"class":37,"line":1729},28,[35,1731,316],{"class":69},[35,1733,1734],{"class":73}," index ",[35,1736,327],{"class":69},[35,1738,1739],{"class":73}," tick_indices",[35,1741,1020],{"class":119},[35,1743,1745,1748,1750,1752,1754,1756,1758,1761,1763,1766],{"class":37,"line":1744},29,[35,1746,1747],{"class":73},"    tick_points",[35,1749,120],{"class":119},[35,1751,1202],{"class":337},[35,1753,595],{"class":119},[35,1755,1207],{"class":337},[35,1757,395],{"class":119},[35,1759,1760],{"class":337},"index",[35,1762,906],{"class":119},[35,1764,1765],{"class":337}," axis_y",[35,1767,611],{"class":119},[35,1769,1771],{"class":37,"line":1770},30,[35,1772,107],{"emptyLinePlaceholder":106},[35,1774,1776,1779,1781,1783,1785,1787,1789,1792,1794,1797,1799,1801,1803,1805,1807,1810,1812,1814,1816,1818],{"class":37,"line":1775},31,[35,1777,1778],{"class":73},"tick_path ",[35,1780,236],{"class":235},[35,1782,640],{"class":73},[35,1784,120],{"class":119},[35,1786,1254],{"class":337},[35,1788,334],{"class":119},[35,1790,1791],{"class":337},"tick_points",[35,1793,148],{"class":119},[35,1795,1796],{"class":372}," stroke",[35,1798,236],{"class":235},[35,1800,243],{"class":242},[35,1802,1306],{"class":45},[35,1804,243],{"class":242},[35,1806,148],{"class":119},[35,1808,1809],{"class":372}," fill",[35,1811,236],{"class":235},[35,1813,243],{"class":242},[35,1815,1306],{"class":45},[35,1817,243],{"class":242},[35,1819,387],{"class":119},[35,1821,1823,1825,1827,1829,1831,1834],{"class":37,"line":1822},32,[35,1824,706],{"class":73},[35,1826,120],{"class":119},[35,1828,701],{"class":337},[35,1830,334],{"class":119},[35,1832,1833],{"class":337},"tick_path",[35,1835,387],{"class":119},[35,1837,1839],{"class":37,"line":1838},33,[35,1840,107],{"emptyLinePlaceholder":106},[35,1842,1844,1847,1849,1851,1853,1855,1858,1860,1862,1865,1867,1870,1872,1874,1876,1878,1880,1882,1884,1886],{"class":37,"line":1843},34,[35,1845,1846],{"class":73},"marker ",[35,1848,236],{"class":235},[35,1850,145],{"class":337},[35,1852,334],{"class":119},[35,1854,243],{"class":242},[35,1856,1857],{"class":45},"bottom-tick",[35,1859,243],{"class":242},[35,1861,148],{"class":119},[35,1863,1864],{"class":330}," TICK_BOTTOM",[35,1866,148],{"class":119},[35,1868,1869],{"class":356}," 10",[35,1871,148],{"class":119},[35,1873,1869],{"class":356},[35,1875,148],{"class":119},[35,1877,1809],{"class":372},[35,1879,236],{"class":235},[35,1881,243],{"class":242},[35,1883,1653],{"class":45},[35,1885,243],{"class":242},[35,1887,387],{"class":119},[35,1889,1891,1894,1896,1898,1900,1903],{"class":37,"line":1890},35,[35,1892,1893],{"class":73},"defs",[35,1895,120],{"class":119},[35,1897,701],{"class":337},[35,1899,334],{"class":119},[35,1901,1902],{"class":337},"marker",[35,1904,387],{"class":119},[35,1906,1908,1910,1912,1915,1917,1920,1922],{"class":37,"line":1907},36,[35,1909,1833],{"class":73},[35,1911,120],{"class":119},[35,1913,1914],{"class":414},"marker_start",[35,1916,404],{"class":235},[35,1918,1919],{"class":73}," marker",[35,1921,120],{"class":119},[35,1923,1924],{"class":414},"url\n",[35,1926,1928,1930,1932,1935,1937,1939,1941],{"class":37,"line":1927},37,[35,1929,1833],{"class":73},[35,1931,120],{"class":119},[35,1933,1934],{"class":414},"marker_mid",[35,1936,404],{"class":235},[35,1938,1919],{"class":73},[35,1940,120],{"class":119},[35,1942,1924],{"class":414},[35,1944,1946,1948,1950,1953,1955,1957,1959],{"class":37,"line":1945},38,[35,1947,1833],{"class":73},[35,1949,120],{"class":119},[35,1951,1952],{"class":414},"marker_end",[35,1954,404],{"class":235},[35,1956,1919],{"class":73},[35,1958,120],{"class":119},[35,1960,1924],{"class":414},[35,1962,1964],{"class":37,"line":1963},39,[35,1965,107],{"emptyLinePlaceholder":106},[35,1967,1969,1971,1973,1975,1977],{"class":37,"line":1968},40,[35,1970,316],{"class":69},[35,1972,1734],{"class":73},[35,1974,327],{"class":69},[35,1976,1739],{"class":73},[35,1978,1020],{"class":119},[35,1980,1982,1985,1987,1989,1991,1994,1996,1998,2000,2002],{"class":37,"line":1981},41,[35,1983,1984],{"class":73},"    tick_date ",[35,1986,236],{"class":235},[35,1988,448],{"class":73},[35,1990,120],{"class":119},[35,1992,1993],{"class":337},"instance",[35,1995,334],{"class":119},[35,1997,887],{"class":337},[35,1999,395],{"class":119},[35,2001,1760],{"class":337},[35,2003,611],{"class":119},[35,2005,2007,2010,2012,2014],{"class":37,"line":2006},42,[35,2008,2009],{"class":73},"    axis_layer",[35,2011,120],{"class":119},[35,2013,701],{"class":337},[35,2015,531],{"class":119},[35,2017,2019,2021,2023,2025],{"class":37,"line":2018},43,[35,2020,1249],{"class":337},[35,2022,120],{"class":119},[35,2024,1433],{"class":337},[35,2026,531],{"class":119},[35,2028,2030,2033,2035,2038,2040,2042,2045,2047],{"class":37,"line":2029},44,[35,2031,2032],{"class":337},"            tick_date",[35,2034,120],{"class":119},[35,2036,2037],{"class":337},"format",[35,2039,334],{"class":119},[35,2041,243],{"class":242},[35,2043,2044],{"class":45},"D MMM 'YY",[35,2046,243],{"class":242},[35,2048,2049],{"class":119},"),\n",[35,2051,2053,2055,2057,2059,2061,2063],{"class":37,"line":2052},45,[35,2054,1447],{"class":372},[35,2056,236],{"class":235},[35,2058,1207],{"class":337},[35,2060,395],{"class":119},[35,2062,1760],{"class":337},[35,2064,1282],{"class":119},[35,2066,2068,2070,2072,2074,2076,2079],{"class":37,"line":2067},46,[35,2069,1472],{"class":372},[35,2071,236],{"class":235},[35,2073,1533],{"class":337},[35,2075,381],{"class":235},[35,2077,2078],{"class":356}," 30",[35,2080,1264],{"class":119},[35,2082,2084,2086,2088,2091],{"class":37,"line":2083},47,[35,2085,1495],{"class":372},[35,2087,236],{"class":235},[35,2089,2090],{"class":356},"13",[35,2092,1264],{"class":119},[35,2094,2096,2098,2100,2102,2104,2106],{"class":37,"line":2095},48,[35,2097,1299],{"class":372},[35,2099,236],{"class":235},[35,2101,243],{"class":242},[35,2103,1653],{"class":45},[35,2105,243],{"class":242},[35,2107,1264],{"class":119},[35,2109,2111,2114,2116,2118,2121,2123],{"class":37,"line":2110},49,[35,2112,2113],{"class":372},"            text_anchor",[35,2115,236],{"class":235},[35,2117,243],{"class":242},[35,2119,2120],{"class":45},"middle",[35,2122,243],{"class":242},[35,2124,1264],{"class":119},[35,2126,2128],{"class":37,"line":2127},50,[35,2129,1315],{"class":119},[35,2131,2133],{"class":37,"line":2132},51,[35,2134,1320],{"class":119},[54,2136,2138],{"id":2137},"grid-lines","Grid Lines",[26,2140,2142],{"className":60,"code":2141,"language":62,"meta":31,"style":31},"for tick in calculate_ticks(min_value, max_value, 5):\n    y = scale_y.map(tick)\n    axis_layer.append(\n        dp.Line(\n            x1=margin[\"left\"],\n            y1=y,\n            x2=svg.w - margin[\"right\"],\n            y2=y,\n            stroke=\"currentColor\",\n            opacity=0.18,\n        )\n    )\n    axis_layer.append(\n        dp.Text(\n            str(tick),\n            x=margin[\"left\"] - 10,\n            y=y + 4,\n            font_size=13,\n            fill=\"currentColor\",\n            text_anchor=\"end\",\n        )\n    )\n\nsvg.save(\"line-chart.svg\")\n",[18,2143,2144,2169,2189,2199,2209,2228,2240,2267,2278,2292,2304,2308,2312,2322,2332,2344,2368,2384,2394,2408,2423,2427,2431,2435],{"__ignoreMap":31},[35,2145,2146,2148,2151,2153,2155,2157,2159,2161,2163,2165,2167],{"class":37,"line":38},[35,2147,316],{"class":69},[35,2149,2150],{"class":73}," tick ",[35,2152,327],{"class":69},[35,2154,208],{"class":337},[35,2156,334],{"class":119},[35,2158,945],{"class":337},[35,2160,148],{"class":119},[35,2162,950],{"class":337},[35,2164,148],{"class":119},[35,2166,1488],{"class":356},[35,2168,341],{"class":119},[35,2170,2171,2174,2176,2178,2180,2182,2184,2187],{"class":37,"line":76},[35,2172,2173],{"class":73},"    y ",[35,2175,236],{"class":235},[35,2177,1217],{"class":73},[35,2179,120],{"class":119},[35,2181,1036],{"class":337},[35,2183,334],{"class":119},[35,2185,2186],{"class":337},"tick",[35,2188,387],{"class":119},[35,2190,2191,2193,2195,2197],{"class":37,"line":90},[35,2192,2009],{"class":73},[35,2194,120],{"class":119},[35,2196,701],{"class":337},[35,2198,531],{"class":119},[35,2200,2201,2203,2205,2207],{"class":37,"line":103},[35,2202,1249],{"class":337},[35,2204,120],{"class":119},[35,2206,1568],{"class":337},[35,2208,531],{"class":119},[35,2210,2211,2214,2216,2218,2220,2222,2224,2226],{"class":37,"line":110},[35,2212,2213],{"class":372},"            x1",[35,2215,236],{"class":235},[35,2217,895],{"class":337},[35,2219,395],{"class":119},[35,2221,243],{"class":242},[35,2223,727],{"class":45},[35,2225,243],{"class":242},[35,2227,1282],{"class":119},[35,2229,2230,2233,2235,2238],{"class":37,"line":131},[35,2231,2232],{"class":372},"            y1",[35,2234,236],{"class":235},[35,2236,2237],{"class":337},"y",[35,2239,1264],{"class":119},[35,2241,2242,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265],{"class":37,"line":155},[35,2243,2244],{"class":372},"            x2",[35,2246,236],{"class":235},[35,2248,696],{"class":337},[35,2250,120],{"class":119},[35,2252,913],{"class":414},[35,2254,916],{"class":235},[35,2256,919],{"class":337},[35,2258,395],{"class":119},[35,2260,243],{"class":242},[35,2262,742],{"class":45},[35,2264,243],{"class":242},[35,2266,1282],{"class":119},[35,2268,2269,2272,2274,2276],{"class":37,"line":172},[35,2270,2271],{"class":372},"            y2",[35,2273,236],{"class":235},[35,2275,2237],{"class":337},[35,2277,1264],{"class":119},[35,2279,2280,2282,2284,2286,2288,2290],{"class":37,"line":194},[35,2281,1269],{"class":372},[35,2283,236],{"class":235},[35,2285,243],{"class":242},[35,2287,1653],{"class":45},[35,2289,243],{"class":242},[35,2291,1264],{"class":119},[35,2293,2294,2297,2299,2302],{"class":37,"line":499},[35,2295,2296],{"class":372},"            opacity",[35,2298,236],{"class":235},[35,2300,2301],{"class":356},"0.18",[35,2303,1264],{"class":119},[35,2305,2306],{"class":37,"line":504},[35,2307,1315],{"class":119},[35,2309,2310],{"class":37,"line":534},[35,2311,1320],{"class":119},[35,2313,2314,2316,2318,2320],{"class":37,"line":587},[35,2315,2009],{"class":73},[35,2317,120],{"class":119},[35,2319,701],{"class":337},[35,2321,531],{"class":119},[35,2323,2324,2326,2328,2330],{"class":37,"line":991},[35,2325,1249],{"class":337},[35,2327,120],{"class":119},[35,2329,1433],{"class":337},[35,2331,531],{"class":119},[35,2333,2334,2338,2340,2342],{"class":37,"line":996},[35,2335,2337],{"class":2336},"s-tzF","            str",[35,2339,334],{"class":119},[35,2341,2186],{"class":337},[35,2343,2049],{"class":119},[35,2345,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366],{"class":37,"line":1007},[35,2347,1447],{"class":372},[35,2349,236],{"class":235},[35,2351,895],{"class":337},[35,2353,395],{"class":119},[35,2355,243],{"class":242},[35,2357,727],{"class":45},[35,2359,243],{"class":242},[35,2361,401],{"class":119},[35,2363,916],{"class":235},[35,2365,1869],{"class":356},[35,2367,1264],{"class":119},[35,2369,2370,2372,2374,2377,2379,2382],{"class":37,"line":1023},[35,2371,1472],{"class":372},[35,2373,236],{"class":235},[35,2375,2376],{"class":337},"y ",[35,2378,381],{"class":235},[35,2380,2381],{"class":356}," 4",[35,2383,1264],{"class":119},[35,2385,2386,2388,2390,2392],{"class":37,"line":1045},[35,2387,1495],{"class":372},[35,2389,236],{"class":235},[35,2391,2090],{"class":356},[35,2393,1264],{"class":119},[35,2395,2396,2398,2400,2402,2404,2406],{"class":37,"line":1063},[35,2397,1299],{"class":372},[35,2399,236],{"class":235},[35,2401,243],{"class":242},[35,2403,1653],{"class":45},[35,2405,243],{"class":242},[35,2407,1264],{"class":119},[35,2409,2410,2412,2414,2416,2419,2421],{"class":37,"line":1631},[35,2411,2113],{"class":372},[35,2413,236],{"class":235},[35,2415,243],{"class":242},[35,2417,2418],{"class":45},"end",[35,2420,243],{"class":242},[35,2422,1264],{"class":119},[35,2424,2425],{"class":37,"line":1643},[35,2426,1315],{"class":119},[35,2428,2429],{"class":37,"line":1660},[35,2430,1320],{"class":119},[35,2432,2433],{"class":37,"line":1672},[35,2434,107],{"emptyLinePlaceholder":106},[35,2436,2437,2439,2441,2444,2446,2448,2451,2453],{"class":37,"line":1677},[35,2438,696],{"class":73},[35,2440,120],{"class":119},[35,2442,2443],{"class":337},"save",[35,2445,334],{"class":119},[35,2447,243],{"class":242},[35,2449,2450],{"class":45},"line-chart.svg",[35,2452,243],{"class":242},[35,2454,387],{"class":119},[1346,2456],{"alt":2457,"src":2458},"Final line chart with axes, labels, ticks, and grid lines.","\u002Fshowcase\u002Ftutorial_line_chart_final.svg",[2460,2461,2462],"style",{},"html pre.shiki code .sED7I, html code.shiki .sED7I{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#A0111F;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .soTeR, html code.shiki .soTeR{--shiki-light:#90A4AE;--shiki-default:#0E1116;--shiki-dark:#E1E4E8}html pre.shiki code .sVsmf, html code.shiki .sVsmf{--shiki-light:#39ADB5;--shiki-default:#0E1116;--shiki-dark:#E1E4E8}html pre.shiki code .sXSbw, html code.shiki .sXSbw{--shiki-light:#90A4AE;--shiki-default:#023B95;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sWKEy, html code.shiki .sWKEy{--shiki-light:#39ADB5;--shiki-default:#A0111F;--shiki-dark:#F97583}html pre.shiki code .sqo_7, html code.shiki .sqo_7{--shiki-light:#39ADB5;--shiki-default:#032563;--shiki-dark:#9ECBFF}html pre.shiki code .s_jvP, html code.shiki .s_jvP{--shiki-light:#91B859;--shiki-default:#032563;--shiki-dark:#9ECBFF}html pre.shiki code .sBTIf, html code.shiki .sBTIf{--shiki-light:#6182B8;--shiki-default:#023B95;--shiki-dark:#79B8FF}html pre.shiki code .sAK04, html code.shiki .sAK04{--shiki-light:#6182B8;--shiki-default:#0E1116;--shiki-dark:#E1E4E8}html pre.shiki code .sNpir, html code.shiki .sNpir{--shiki-light:#F76D47;--shiki-default:#023B95;--shiki-dark:#79B8FF}html pre.shiki code .sYEV4, html code.shiki .sYEV4{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#702C00;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sm80-, html code.shiki .sm80-{--shiki-light:#E53935;--shiki-default:#0E1116;--shiki-dark:#E1E4E8}html pre.shiki code .sTy78, html code.shiki .sTy78{--shiki-light:#39ADB5;--shiki-default:#023B95;--shiki-dark:#79B8FF}html pre.shiki code .s-tzF, html code.shiki .s-tzF{--shiki-light:#E2931D;--shiki-default:#023B95;--shiki-dark:#79B8FF}html pre.shiki code .sp6cl, html code.shiki .sp6cl{--shiki-light:#E2931D;--shiki-default:#702C00;--shiki-dark:#B392F0}",{"title":31,"searchDepth":90,"depth":90,"links":2464},[2465,2466,2467,2468,2469,2470],{"id":56,"depth":76,"text":57},{"id":221,"depth":76,"text":222},{"id":614,"depth":76,"text":615},{"id":1080,"depth":76,"text":1081},{"id":1352,"depth":76,"text":1353},{"id":2137,"depth":76,"text":2138},"Build a multi-series line chart with pyDreamplet scales, noise, markers, and labels.","md",{"category":2474},"tutorials",{"title":2476},"Line chart","\u002Ftutorials\u002Fline-chart",{"title":5,"description":2471},"tutorials\u002Fline-chart","-ZqhZ6KDZp6V9wKfAa_iuf96bgdlGsJCjV3t48dQ9kA",1780692544195]