[Завершить редактирование] после редактирования OP, помещая больше графиков в один SVG
Ну, чем вы можете использовать SVG для графика (вам просто нужен текстовый редактор и SVG просмотрщик, как интернет-браузер). Вам просто нужно немного изменить данные и либо скрипт, либо вручную построить путь SVG . Вычислите общий масштаб и скорректируйте преобразование каждого графика / пути соответственно. Вот сценарий VCL / C ++ для этого (могу игнорировать материал VCL, я использую только тип AnsiString
для манипулирования текстом и Memo
для простого сохранения текста в файл):
//---------------------------------------------------------------------------
AnsiString generate_svg(int *P)
{
AnsiString svg,path;
float xm,ym,dm,f; int i,ix,c,d,x,y;
const AnsiString col[]=
{
"aliceblue" ,
"antiquewhite" ,
"aqua" ,
"aquamarine" ,
"azure" ,
"beige" ,
"bisque" ,
"black" ,
"blanchedalmond" ,
"blue" ,
"blueviolet" ,
"brown" ,
"burlywood" ,
"cadetblue" ,
"chartreuse" ,
"chocolate" ,
"coral" ,
"lightpink" ,
"lightsalmon" ,
"lightseagreen" ,
"lightskyblue" ,
"lightslategray" ,
"lightslategrey" ,
"lightsteelblue" ,
"lightyellow" ,
"lime" ,
"limegreen" ,
"linen" ,
"magenta" ,
"maroon" ,
"mediumaquamarine" ,
"mediumblue" ,
"mediumorchid" ,
"cornflowerblue" ,
"cornsilk" ,
"crimson" ,
"cyan" ,
"darkblue" ,
"darkcyan" ,
"darkgoldenrod" ,
"darkgray" ,
"darkgreen" ,
"darkgrey" ,
"darkkhaki" ,
"darkmagenta" ,
"darkolivegreen" ,
"darkorange" ,
"darkorchid" ,
"darkred" ,
"darksalmon" ,
"darkseagreen" ,
"darkslateblue" ,
"darkslategray" ,
"darkslategrey" ,
"darkturquoise" ,
"darkviolet" ,
"deeppink" ,
"deepskyblue" ,
"dimgray" ,
"dimgrey" ,
"dodgerblue" ,
"firebrick" ,
"floralwhite" ,
"forestgreen" ,
"fuchsia" ,
"gainsboro" ,
"ghostwhite" ,
"gold" ,
"goldenrod" ,
"gray" ,
"grey" ,
"green" ,
"greenyellow" ,
"honeydew" ,
"hotpink" ,
"indianred" ,
"indigo" ,
"ivory" ,
"khaki" ,
"lavender" ,
"lavenderblush" ,
"mediumpurple" ,
"mediumseagreen" ,
"mediumslateblue" ,
"mediumspringgreen" ,
"mediumturquoise" ,
"mediumvioletred" ,
"midnightblue" ,
"mintcream" ,
"mistyrose" ,
"moccasin" ,
"navajowhite" ,
"navy" ,
"oldlace" ,
"olive" ,
"olivedrab" ,
"orange" ,
"orangered" ,
"orchid" ,
"palegoldenrod" ,
"palegreen" ,
"paleturquoise" ,
"palevioletred" ,
"papayawhip" ,
"peachpuff" ,
"peru" ,
"pink" ,
"plum" ,
"powderblue" ,
"purple" ,
"red" ,
"rosybrown" ,
"royalblue" ,
"saddlebrown" ,
"salmon" ,
"sandybrown" ,
"seagreen" ,
"seashell" ,
"sienna" ,
"silver" ,
"skyblue" ,
"slateblue" ,
"slategray" ,
"slategrey" ,
"snow" ,
"springgreen" ,
"steelblue" ,
"tan" ,
"teal" ,
"lawngreen" ,
"lemonchiffon" ,
"lightblue" ,
"lightcoral" ,
"lightcyan" ,
"lightgoldenrodyellow",
"lightgray" ,
"lightgreen" ,
"lightgrey" ,
"thistle" ,
"tomato" ,
"turquoise" ,
"violet" ,
"wheat" ,
"white" ,
"whitesmoke" ,
"yellow" ,
"yellowgreen" ,
};
// find max x,y,d (for computation of global transform)
for (xm=0,ym=0,dm=0,i=0,ix=0;P[i]>=0;ix++,i++) // process all graphs in P[]
{
d=P[i]; i++; // divider
if (dm<d) dm=d; // global max divider
for (x=0,y=0;P[i]>=0;i++,x++) // process single graph
if (y<P[i]) y=P[i]; // local max y
f=float(y)/float(d);
if (ym<f) ym=f; // global max y
if (xm<x) xm=x; // global max x
}
// [SVG header]
svg ="<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-100 -100 1100 1100\">\r\n";
// [support gfx] <0,1000> coordinates
svg+=" <g fill=\"none\" stroke-width=\"1px\">\r\n";
svg+=" <rect stroke=\"black\" x=\"0\" y=\"0\" height=\"1000\" width=\"1000\"/>\r\n";
// [graphs]
for (i=0,ix=0;P[i]>=0;ix++,i++) // process all graphs in P[]
{
f=P[i]; i++; // divider
f*=2.0*ym; // scale
svg+=" <path stroke=\""+col[ix]+"\"";
svg+=AnsiString().sprintf(" transform=\"matrix(%.6f,%.6f,%.6f,%.6f,%.6f,%.6f)\"",1000.0/xm,0.0,0.0,-1000.0/f,0.0,1000.0);
svg+=" d=\"M 0 0"; // Move to (0,0) absolute
for (x=0;P[i]>=0;i++,x++) // process single graph
svg+=AnsiString().sprintf(" L %i %i",x,P[i]); // Line to (x,y) absolute
svg+="\"/>\r\n";
}
svg+=" </g>\r\n";
svg+="</svg>\r\n";
return svg;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
{
int P[]=
{
// divider,y0,y1,y2,....,-1
42,3,3,4,3,4,5,3,3,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,1,-1,
170,4,6,8,6,8,11,8,9,6,6,8,4,7,3,5,3,3,3,0,1,0,1,2,2,1,0,1,1,1,2,2,2,2,2,2,2,3,3,4,5,4,6,4,4,1,2,1,0,0,0,0,1,-1,
682,5,9,13,15,20,25,25,34,21,26,24,21,26,19,21,22,14,20,10,13,10,6,11,6,8,3,4,5,5,8,5,9,7,9,10,5,5,5,7,11,11,15,13,16,11,15,18,9,9,3,6,10,5,4,2,2,1,0,1,0,2,1,1,3,1,1,-1,
2730,6,12,22,28,41,55,58,80,68,91,84,72,87,65,82,89,61,80,51,66,49,47,61,39,50,21,31,34,24,40,23,36,34,31,44,27,33,18,25,37,33,50,35,52,40,52,66,45,48,32,34,43,32,37,22,29,21,15,22,10,18,11,15,22,10,13,1,4,4,1,2,1,2,0,1,2,0,1,1,0,0,0,0,0,0,0,1,-1,
10922,7,17,33,47,77,108,126,179,167,226,245,235,308,224,303,300,263,318,216,278,204,238,282,180,229,138,185,211,145,194,122,168,137,136,168,113,150,93,123,132,118,165,124,174,156,167,215,150,204,134,167,208,127,180,107,145,119,97,131,81,100,63,78,99,61,83,43,56,58,35,46,19,26,13,14,18,7,8,4,8,9,3,6,2,6,4,6,11,5,6,2,3,6,2,4,4,2,1,2,2,1,2,-1,
43690,8,22,48,77,133,196,262,391,396,550,607,656,877,689,919,922,904,1104,823,1058,806,919,1120,792,1028,647,876,930,721,876,585,741,621,615,777,528,695,420,544,608,488,656,458,620,588,591,775,545,761,507,666,818,551,735,466,626,560,505,659,387,509,307,401,541,314,438,259,339,361,234,318,154,214,125,161,196,90,125,61,95,114,58,88,39,65,36,43,72,41,49,28,41,50,27,32,16,25,12,20,28,11,13,6,9,13,2,6,2,2,3,3,10,3,7,2,3,4,2,4,0,1,1,1,1,1,0,0,0,1,-1,
174762,9,27,67,118,220,348,486,771,825,1214,1373,1633,2257,1906,2554,2557,2737,3353,2728,3572,2798,3278,3935,3040,3969,2675,3469,3713,2907,3630,2491,3269,2647,2733,3408,2315,3043,1931,2584,2710,2155,2789,1904,2566,2473,2331,3061,2134,2871,1939,2595,3186,2249,3031,1967,2575,2440,2253,2909,1827,2398,1549,1992,2595,1593,2098,1248,1661,1819,1347,1741,991,1320,792,964,1310,710,939,507,694,826,473,651,341,468,264,328,494,253,357,179,263,348,180,273,130,193,133,157,209,100,138,63,91,130,58,79,40,67,58,53,77,40,53,24,32,48,22,35,20,25,28,14,17,11,15,5,8,17,7,8,2,2,4,4,8,2,2,0,1,3,1,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,-1,
699050,10,34,90,176,350,577,871,1436,1657,2534,2966,3764,5358,4882,6698,6791,7702,9604,8231,10947,8918,10913,12958,10509,13828,9786,12794,13566,11358,14039,9970,13110,10714,11362,14112,9696,12748,8299,10977,11669,9297,11941,8009,10755,10446,9502,12403,8392,11276,7651,10182,12325,9126,12174,8067,10627,10042,9292,12137,7975,10516,6945,8760,11373,7282,9587,5943,7862,8529,6461,8474,5139,6852,4337,5341,6935,4055,5350,3019,4024,4776,3023,4058,2251,3039,1851,2247,3039,1720,2289,1249,1742,2273,1290,1830,987,1372,972,978,1372,767,1038,538,722,994,529,710,367,535,509,393,589,316,401,226,297,389,197,290,143,202,226,147,211,103,140,79,101,142,67,106,51,67,75,46,65,32,45,36,42,55,24,34,11,12,25,9,21,8,17,10,9,11,5,14,5,7,6,3,7,4,5,7,6,6,3,2,0,1,2,0,2,2,3,2,2,0,0,0,0,1,1,0,0,0,1,2,1,2,0,0,0,0,1,1,2,-1,
2796202,11,41,118,251,532,924,1500,2580,3164,5018,6108,8193,12030,11599,16410,16947,20329,25638,23361,31525,26494,33543,39633,33833,44866,33020,43543,45974,41030,50612,37388,49151,40472,44081,54221,38847,51156,33921,44680,48127,38710,48902,33436,44407,43373,39062,50116,34268,45652,30338,40610,47920,36278,48435,32356,42939,41366,37675,49334,33062,43626,29838,37507,48140,31771,42095,26739,35539,37571,29438,38388,24218,32092,21490,26087,33871,20799,27405,16238,21484,25225,16608,22120,12875,17174,10980,13179,17537,10097,13580,7732,10423,13393,7912,10700,6146,8242,6077,6224,8464,4728,6495,3578,4873,6457,3565,4909,2640,3644,3535,2742,3829,2090,2847,1587,2128,2914,1549,2116,1147,1600,1751,1134,1596,838,1190,645,836,1169,600,853,452,668,780,409,581,292,423,278,324,474,242,334,158,234,327,166,234,114,165,110,107,171,84,138,66,86,114,56,78,41,57,70,49,63,26,49,25,36,51,14,22,12,18,23,20,20,6,11,4,10,15,9,10,5,8,11,6,10,6,9,5,8,14,7,14,7,7,5,1,5,1,2,4,1,3,3,3,1,3,3,0,1,0,0,1,1,1,0,0,0,1,-1,
-1
};
Memo1->Lines->Text=generate_svg(P);
Memo1->Lines->SaveToFile("out.svg");
}
//---------------------------------------------------------------------------
результирующий SVG :
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-100 -100 1100 1100">
<g fill="none" stroke-width="1px">
<rect stroke="black" x="0" y="0" height="1000" width="1000"/>
<path stroke="aliceblue" transform="matrix(4.504505,0.000000,0.000000,-100.000000,0.000000,1000.000000)" d="M 0 0 L 0 3 L 1 3 L 2 4 L 3 3 L 4 4 L 5 5 L 6 3 L 7 3 L 8 1 L 9 2 L 10 2 L 11 0 L 12 0 L 13 0 L 14 0 L 15 0 L 16 0 L 17 0 L 18 0 L 19 0 L 20 0 L 21 0 L 22 0 L 23 0 L 24 0 L 25 0 L 26 0 L 27 0 L 28 0 L 29 0 L 30 0 L 31 0 L 32 0 L 33 0 L 34 0 L 35 0 L 36 1 L 37 1 L 38 2 L 39 2 L 40 2 L 41 1"/>
<path stroke="antiquewhite" transform="matrix(4.504505,0.000000,0.000000,-24.705881,0.000000,1000.000000)" d="M 0 0 L 0 4 L 1 6 L 2 8 L 3 6 L 4 8 L 5 11 L 6 8 L 7 9 L 8 6 L 9 6 L 10 8 L 11 4 L 12 7 L 13 3 L 14 5 L 15 3 L 16 3 L 17 3 L 18 0 L 19 1 L 20 0 L 21 1 L 22 2 L 23 2 L 24 1 L 25 0 L 26 1 L 27 1 L 28 1 L 29 2 L 30 2 L 31 2 L 32 2 L 33 2 L 34 2 L 35 2 L 36 3 L 37 3 L 38 4 L 39 5 L 40 4 L 41 6 L 42 4 L 43 4 L 44 1 L 45 2 L 46 1 L 47 0 L 48 0 L 49 0 L 50 0 L 51 1"/>
<path stroke="aqua" transform="matrix(4.504505,0.000000,0.000000,-6.158358,0.000000,1000.000000)" d="M 0 0 L 0 5 L 1 9 L 2 13 L 3 15 L 4 20 L 5 25 L 6 25 L 7 34 L 8 21 L 9 26 L 10 24 L 11 21 L 12 26 L 13 19 L 14 21 L 15 22 L 16 14 L 17 20 L 18 10 L 19 13 L 20 10 L 21 6 L 22 11 L 23 6 L 24 8 L 25 3 L 26 4 L 27 5 L 28 5 L 29 8 L 30 5 L 31 9 L 32 7 L 33 9 L 34 10 L 35 5 L 36 5 L 37 5 L 38 7 L 39 11 L 40 11 L 41 15 L 42 13 L 43 16 L 44 11 L 45 15 L 46 18 L 47 9 L 48 9 L 49 3 L 50 6 L 51 10 L 52 5 L 53 4 L 54 2 L 55 2 L 56 1 L 57 0 L 58 1 L 59 0 L 60 2 L 61 1 L 62 1 L 63 3 L 64 1 L 65 1"/>
<path stroke="aquamarine" transform="matrix(4.504505,0.000000,0.000000,-1.538462,0.000000,1000.000000)" d="M 0 0 L 0 6 L 1 12 L 2 22 L 3 28 L 4 41 L 5 55 L 6 58 L 7 80 L 8 68 L 9 91 L 10 84 L 11 72 L 12 87 L 13 65 L 14 82 L 15 89 L 16 61 L 17 80 L 18 51 L 19 66 L 20 49 L 21 47 L 22 61 L 23 39 L 24 50 L 25 21 L 26 31 L 27 34 L 28 24 L 29 40 L 30 23 L 31 36 L 32 34 L 33 31 L 34 44 L 35 27 L 36 33 L 37 18 L 38 25 L 39 37 L 40 33 L 41 50 L 42 35 L 43 52 L 44 40 L 45 52 L 46 66 L 47 45 L 48 48 L 49 32 L 50 34 L 51 43 L 52 32 L 53 37 L 54 22 L 55 29 L 56 21 L 57 15 L 58 22 L 59 10 L 60 18 L 61 11 L 62 15 L 63 22 L 64 10 L 65 13 L 66 1 L 67 4 L 68 4 L 69 1 L 70 2 L 71 1 L 72 2 L 73 0 L 74 1 L 75 2 L 76 0 L 77 1 L 78 1 L 79 0 L 80 0 L 81 0 L 82 0 L 83 0 L 84 0 L 85 0 L 86 1"/>
<path stroke="azure" transform="matrix(4.504505,0.000000,0.000000,-0.384545,0.000000,1000.000000)" d="M 0 0 L 0 7 L 1 17 L 2 33 L 3 47 L 4 77 L 5 108 L 6 126 L 7 179 L 8 167 L 9 226 L 10 245 L 11 235 L 12 308 L 13 224 L 14 303 L 15 300 L 16 263 L 17 318 L 18 216 L 19 278 L 20 204 L 21 238 L 22 282 L 23 180 L 24 229 L 25 138 L 26 185 L 27 211 L 28 145 L 29 194 L 30 122 L 31 168 L 32 137 L 33 136 L 34 168 L 35 113 L 36 150 L 37 93 L 38 123 L 39 132 L 40 118 L 41 165 L 42 124 L 43 174 L 44 156 L 45 167 L 46 215 L 47 150 L 48 204 L 49 134 L 50 167 L 51 208 L 52 127 L 53 180 L 54 107 L 55 145 L 56 119 L 57 97 L 58 131 L 59 81 L 60 100 L 61 63 L 62 78 L 63 99 L 64 61 L 65 83 L 66 43 L 67 56 L 68 58 L 69 35 L 70 46 L 71 19 L 72 26 L 73 13 L 74 14 L 75 18 L 76 7 L 77 8 L 78 4 L 79 8 L 80 9 L 81 3 L 82 6 L 83 2 L 84 6 L 85 4 L 86 6 L 87 11 L 88 5 L 89 6 L 90 2 L 91 3 L 92 6 L 93 2 L 94 4 L 95 4 L 96 2 L 97 1 L 98 2 L 99 2 L 100 1 L 101 2"/>
<path stroke="beige" transform="matrix(4.504505,0.000000,0.000000,-0.096132,0.000000,1000.000000)" d="M 0 0 L 0 8 L 1 22 L 2 48 L 3 77 L 4 133 L 5 196 L 6 262 L 7 391 L 8 396 L 9 550 L 10 607 L 11 656 L 12 877 L 13 689 L 14 919 L 15 922 L 16 904 L 17 1104 L 18 823 L 19 1058 L 20 806 L 21 919 L 22 1120 L 23 792 L 24 1028 L 25 647 L 26 876 L 27 930 L 28 721 L 29 876 L 30 585 L 31 741 L 32 621 L 33 615 L 34 777 L 35 528 L 36 695 L 37 420 L 38 544 L 39 608 L 40 488 L 41 656 L 42 458 L 43 620 L 44 588 L 45 591 L 46 775 L 47 545 L 48 761 L 49 507 L 50 666 L 51 818 L 52 551 L 53 735 L 54 466 L 55 626 L 56 560 L 57 505 L 58 659 L 59 387 L 60 509 L 61 307 L 62 401 L 63 541 L 64 314 L 65 438 L 66 259 L 67 339 L 68 361 L 69 234 L 70 318 L 71 154 L 72 214 L 73 125 L 74 161 L 75 196 L 76 90 L 77 125 L 78 61 L 79 95 L 80 114 L 81 58 L 82 88 L 83 39 L 84 65 L 85 36 L 86 43 L 87 72 L 88 41 L 89 49 L 90 28 L 91 41 L 92 50 L 93 27 L 94 32 L 95 16 L 96 25 L 97 12 L 98 20 L 99 28 L 100 11 L 101 13 L 102 6 L 103 9 L 104 13 L 105 2 L 106 6 L 107 2 L 108 2 L 109 3 L 110 3 L 111 10 L 112 3 L 113 7 L 114 2 L 115 3 L 116 4 L 117 2 L 118 4 L 119 0 L 120 1 L 121 1 L 122 1 L 123 1 L 124 1 L 125 0 L 126 0 L 127 0 L 128 1"/>
<path stroke="bisque" transform="matrix(4.504505,0.000000,0.000000,-0.024033,0.000000,1000.000000)" d="M 0 0 L 0 9 L 1 27 L 2 67 L 3 118 L 4 220 L 5 348 L 6 486 L 7 771 L 8 825 L 9 1214 L 10 1373 L 11 1633 L 12 2257 L 13 1906 L 14 2554 L 15 2557 L 16 2737 L 17 3353 L 18 2728 L 19 3572 L 20 2798 L 21 3278 L 22 3935 L 23 3040 L 24 3969 L 25 2675 L 26 3469 L 27 3713 L 28 2907 L 29 3630 L 30 2491 L 31 3269 L 32 2647 L 33 2733 L 34 3408 L 35 2315 L 36 3043 L 37 1931 L 38 2584 L 39 2710 L 40 2155 L 41 2789 L 42 1904 L 43 2566 L 44 2473 L 45 2331 L 46 3061 L 47 2134 L 48 2871 L 49 1939 L 50 2595 L 51 3186 L 52 2249 L 53 3031 L 54 1967 L 55 2575 L 56 2440 L 57 2253 L 58 2909 L 59 1827 L 60 2398 L 61 1549 L 62 1992 L 63 2595 L 64 1593 L 65 2098 L 66 1248 L 67 1661 L 68 1819 L 69 1347 L 70 1741 L 71 991 L 72 1320 L 73 792 L 74 964 L 75 1310 L 76 710 L 77 939 L 78 507 L 79 694 L 80 826 L 81 473 L 82 651 L 83 341 L 84 468 L 85 264 L 86 328 L 87 494 L 88 253 L 89 357 L 90 179 L 91 263 L 92 348 L 93 180 L 94 273 L 95 130 L 96 193 L 97 133 L 98 157 L 99 209 L 100 100 L 101 138 L 102 63 L 103 91 L 104 130 L 105 58 L 106 79 L 107 40 L 108 67 L 109 58 L 110 53 L 111 77 L 112 40 L 113 53 L 114 24 L 115 32 L 116 48 L 117 22 L 118 35 L 119 20 L 120 25 L 121 28 L 122 14 L 123 17 L 124 11 L 125 15 L 126 5 L 127 8 L 128 17 L 129 7 L 130 8 L 131 2 L 132 2 L 133 4 L 134 4 L 135 8 L 136 2 L 137 2 L 138 0 L 139 1 L 140 3 L 141 1 L 142 3 L 143 0 L 144 0 L 145 0 L 146 0 L 147 0 L 148 0 L 149 2 L 150 0 L 151 0 L 152 0 L 153 0 L 154 0 L 155 0 L 156 0 L 157 0 L 158 0 L 159 0 L 160 0 L 161 0 L 162 1 L 163 1"/>
<path stroke="black" transform="matrix(4.504505,0.000000,0.000000,-0.006008,0.000000,1000.000000)" d="M 0 0 L 0 10 L 1 34 L 2 90 L 3 176 L 4 350 L 5 577 L 6 871 L 7 1436 L 8 1657 L 9 2534 L 10 2966 L 11 3764 L 12 5358 L 13 4882 L 14 6698 L 15 6791 L 16 7702 L 17 9604 L 18 8231 L 19 10947 L 20 8918 L 21 10913 L 22 12958 L 23 10509 L 24 13828 L 25 9786 L 26 12794 L 27 13566 L 28 11358 L 29 14039 L 30 9970 L 31 13110 L 32 10714 L 33 11362 L 34 14112 L 35 9696 L 36 12748 L 37 8299 L 38 10977 L 39 11669 L 40 9297 L 41 11941 L 42 8009 L 43 10755 L 44 10446 L 45 9502 L 46 12403 L 47 8392 L 48 11276 L 49 7651 L 50 10182 L 51 12325 L 52 9126 L 53 12174 L 54 8067 L 55 10627 L 56 10042 L 57 9292 L 58 12137 L 59 7975 L 60 10516 L 61 6945 L 62 8760 L 63 11373 L 64 7282 L 65 9587 L 66 5943 L 67 7862 L 68 8529 L 69 6461 L 70 8474 L 71 5139 L 72 6852 L 73 4337 L 74 5341 L 75 6935 L 76 4055 L 77 5350 L 78 3019 L 79 4024 L 80 4776 L 81 3023 L 82 4058 L 83 2251 L 84 3039 L 85 1851 L 86 2247 L 87 3039 L 88 1720 L 89 2289 L 90 1249 L 91 1742 L 92 2273 L 93 1290 L 94 1830 L 95 987 L 96 1372 L 97 972 L 98 978 L 99 1372 L 100 767 L 101 1038 L 102 538 L 103 722 L 104 994 L 105 529 L 106 710 L 107 367 L 108 535 L 109 509 L 110 393 L 111 589 L 112 316 L 113 401 L 114 226 L 115 297 L 116 389 L 117 197 L 118 290 L 119 143 L 120 202 L 121 226 L 122 147 L 123 211 L 124 103 L 125 140 L 126 79 L 127 101 L 128 142 L 129 67 L 130 106 L 131 51 L 132 67 L 133 75 L 134 46 L 135 65 L 136 32 L 137 45 L 138 36 L 139 42 L 140 55 L 141 24 L 142 34 L 143 11 L 144 12 L 145 25 L 146 9 L 147 21 L 148 8 L 149 17 L 150 10 L 151 9 L 152 11 L 153 5 L 154 14 L 155 5 L 156 7 L 157 6 L 158 3 L 159 7 L 160 4 L 161 5 L 162 7 L 163 6 L 164 6 L 165 3 L 166 2 L 167 0 L 168 1 L 169 2 L 170 0 L 171 2 L 172 2 L 173 3 L 174 2 L 175 2 L 176 0 L 177 0 L 178 0 L 179 0 L 180 1 L 181 1 L 182 0 L 183 0 L 184 0 L 185 1 L 186 2 L 187 1 L 188 2 L 189 0 L 190 0 L 191 0 L 192 0 L 193 1 L 194 1 L 195 2"/>
<path stroke="blanchedalmond" transform="matrix(4.504505,0.000000,0.000000,-0.001502,0.000000,1000.000000)" d="M 0 0 L 0 11 L 1 41 L 2 118 L 3 251 L 4 532 L 5 924 L 6 1500 L 7 2580 L 8 3164 L 9 5018 L 10 6108 L 11 8193 L 12 12030 L 13 11599 L 14 16410 L 15 16947 L 16 20329 L 17 25638 L 18 23361 L 19 31525 L 20 26494 L 21 33543 L 22 39633 L 23 33833 L 24 44866 L 25 33020 L 26 43543 L 27 45974 L 28 41030 L 29 50612 L 30 37388 L 31 49151 L 32 40472 L 33 44081 L 34 54221 L 35 38847 L 36 51156 L 37 33921 L 38 44680 L 39 48127 L 40 38710 L 41 48902 L 42 33436 L 43 44407 L 44 43373 L 45 39062 L 46 50116 L 47 34268 L 48 45652 L 49 30338 L 50 40610 L 51 47920 L 52 36278 L 53 48435 L 54 32356 L 55 42939 L 56 41366 L 57 37675 L 58 49334 L 59 33062 L 60 43626 L 61 29838 L 62 37507 L 63 48140 L 64 31771 L 65 42095 L 66 26739 L 67 35539 L 68 37571 L 69 29438 L 70 38388 L 71 24218 L 72 32092 L 73 21490 L 74 26087 L 75 33871 L 76 20799 L 77 27405 L 78 16238 L 79 21484 L 80 25225 L 81 16608 L 82 22120 L 83 12875 L 84 17174 L 85 10980 L 86 13179 L 87 17537 L 88 10097 L 89 13580 L 90 7732 L 91 10423 L 92 13393 L 93 7912 L 94 10700 L 95 6146 L 96 8242 L 97 6077 L 98 6224 L 99 8464 L 100 4728 L 101 6495 L 102 3578 L 103 4873 L 104 6457 L 105 3565 L 106 4909 L 107 2640 L 108 3644 L 109 3535 L 110 2742 L 111 3829 L 112 2090 L 113 2847 L 114 1587 L 115 2128 L 116 2914 L 117 1549 L 118 2116 L 119 1147 L 120 1600 L 121 1751 L 122 1134 L 123 1596 L 124 838 L 125 1190 L 126 645 L 127 836 L 128 1169 L 129 600 L 130 853 L 131 452 L 132 668 L 133 780 L 134 409 L 135 581 L 136 292 L 137 423 L 138 278 L 139 324 L 140 474 L 141 242 L 142 334 L 143 158 L 144 234 L 145 327 L 146 166 L 147 234 L 148 114 L 149 165 L 150 110 L 151 107 L 152 171 L 153 84 L 154 138 L 155 66 L 156 86 L 157 114 L 158 56 L 159 78 L 160 41 L 161 57 L 162 70 L 163 49 L 164 63 L 165 26 L 166 49 L 167 25 L 168 36 L 169 51 L 170 14 L 171 22 L 172 12 L 173 18 L 174 23 L 175 20 L 176 20 L 177 6 L 178 11 L 179 4 L 180 10 L 181 15 L 182 9 L 183 10 L 184 5 L 185 8 L 186 11 L 187 6 L 188 10 L 189 6 L 190 9 L 191 5 L 192 8 L 193 14 L 194 7 L 195 14 L 196 7 L 197 7 L 198 5 L 199 1 L 200 5 L 201 1 L 202 2 L 203 4 L 204 1 L 205 3 L 206 3 L 207 3 L 208 1 L 209 3 L 210 3 L 211 0 L 212 1 L 213 0 L 214 0 L 215 1 L 216 1 L 217 1 L 218 0 L 219 0 L 220 0 L 221 1"/>
</g>
</svg>
и скриншот:
Как видите, я просто заменил /n
ничем и добавил n
в качестве первого числа в последовательности для каждого графика. Я также добавил полный список именованных цветов в SVG , вы можете играть с порядком, чтобы более темные цвета шли первыми, теперь они упорядочены в алфавитном порядке, что не идеально, так как вы видите, что многие графики очень близки к белому, делая их почти невидим.
Теперь, если вы не хотите кодировать, вы можете сделать это и вручную. Просто преобразуйте свои данные в блокноте, заменив /n
ничем, и затем добавьте L (например, заменив * 1039). *) и добавьте инкрементную x
координату (к сожалению, это нужно делать вручную, если вы не получили макрос в текстовом редакторе). И, конечно, добавить заголовок и SVG материал.
Отсюда вы просто открываете SVG в браузере и делаете скриншот. Затем в краску вы можете добавить то, что вы хотите. Если вы изучите SVG , вы даже можете сделать все вещи в SVG напрямую (слишком лениво для этого), такие как добавление сетки, меток, легенды о масштабах и т. Д. *
viewbox
дает вам масштабирование / разрешение вашего графика с некоторой границей. transforms
вычисляется так:
transform="matrix(1000.0/max(x),0.0,0.0,-1000.0*scale/divider,0.0,1000.0)"
Где x
- это максимум x
всех графиков, divider
- это n
из /n
всех значений для фактического обработанного графика, а масштаб - это шкала y
(так как вероятности распределения быть намного меньше, чем значение 1,0). Предполагая, что график начинается с (0,0)
, а 1000.0
- это разрешение от viewbox
без рамки. Это гарантирует, что ваши данные не нужно конвертировать, а график соответствует стандартной математической записи.
Так что здесь пусто SVG :
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-100 -100 1100 1100">
<g fill="none" stroke-width="1px">
<rect stroke="black" x="0" y="0" height="1000" width="1000"/>
<path stroke="***HERE GOES COLOR NAME***" transform="matrix(***HERE COMPUTED TRANSFORM MATRIX***)" d="M 0 0 **HERE GRAPH: L x0 y0 L x1 y1 ... ** "/>
</g>
</svg>
, поэтому для каждого графика добавьте строку <path ...>
, вычислите значения матрицы преобразования и добавьте данные графика после d="M 0 0
в виде L 0 P(0) L 1 P(1) ....
Вы можете добавить / настроить все, что хотите, это просто текстовый файл ... Однако я не эксперт в SVG (я просто закодировал декодер / кодировщик для моего вектора CAD / CAM SW Мне понадобилось несколько лет назад для работы и использования с тех пор, но на этом мои знания заканчиваются), поэтому могут быть даже более простые способы сделать это с SVG (например, избавиться от добавочной координаты x
). Если бы вы могли получить ваши данные относительным способом, то вы могли бы, например, использовать l 1 dP[x]
вместо L x P[x]
, что можно было бы сделать простой заменой в блокноте ...