<canvas id="canvas"></canvas>
canvas {
  border: 1px solid red;
}
console.clear();
(function() {
  let data = getData();
  let canvas = document.getElementById('canvas');
  let ctx = canvas.getContext('2d');

  window.onresize = draw;
  draw();

  function draw() {
	let vw = canvas.width = window.innerWidth - 30;
	let vh = canvas.height = window.innerHeight - 20;

	real_data();
	attempt();

	function real_data() {
	  ctx.fillStyle = "black";
	  data.forEach(function(p) {
		let cx = vw * p[0] / 100;
		let cy = vh - vh * (p[1] - 1061184077) / (1072693248 - 1061184077);
		point(cx, cy, 5);
	  });
	}

	function attempt() {
	  ctx.fillStyle = "orange";
	  
	  
	  
	  
	  data.forEach(function(p) {
		let cx = vw * p[0] / 100;

		
		
		
		let percent = p[0] //Процент
		let y; // Число
		
		
      
    		let err = (100-percent)*1.5 ;//погрешность
    let err_2 = (49.9-percent)*1.5 ;//погрешность
    let err_3 = 0 ;//погрешность
    let err_4 = Math.floor(0) ;//погрешность
  if(percent <= 5){
  err_4 = Math.floor(0) ;//погрешность
}  let err_5 = Math.floor(0)
      
      
  let err_6;//погрешность 
 if(percent >= 12.5){
err_3 = (24.7-percent)*6.9 ;//погрешность 
   }   else if(percent >= 5.1){
     err_3 = (87.5-(125-percent*10))*1.05;//погрешность 
   } else {
     err_3 = 0-((50-percent*10)*1.6);
   }
      
      
      
      
		//let err = Math.floor((100-percent)*1.5) ;//погрешность
    //let err_2 = Math.floor((49.9-percent)*1.5) ;//погрешность
    //let err_3 = Math.floor((24.6-percent)*6.7) ;//погрешность
    //let err_4 = Math.floor(0) ;//погрешность
    //let err_5 = Math.floor((24.9-percent)+28) ;//погрешность  
    //let err_5 = Math.floor(((124-percent*10)*1.5)-1) ;//погрешность 12.5
     
        
        
        
        
      
  console.log(p[1])
		let max = 1072693248
		let min = 1061184077
		
		let hund = 100
		
		
		let if_val_1 = hund-0.1;							// 99.9
		let if_val_2 = (hund/Math.pow(2, 1))		// "50.0"
		let if_val_3 = if_val_2-0.1							// 49.9
		let if_val_4 = (hund/Math.pow(2, 2))		//"25.0"
		let if_val_5 = if_val_4-0.1							//24.9
		let if_val_6 = (hund/Math.pow(2, 3))		//"12.5"
		let if_val_7 = if_val_6-0.1							//12.4
		let if_val_8 = (hund/Math.pow(2, 4))		//"6.3"
		let if_val_9 = if_val_8-0.1							// 6.2
		let if_val_10 = (hund/Math.pow(2, 5))	//"3.1"
		let if_val_11 = if_val_10-0.1						//3
		let if_val_12 = (hund/Math.pow(2, 6))	//"1.6"
		let if_val_13 = if_val_12-0.1						// 1.5
		let if_val_14 = (hund/Math.pow(2, 7))	//0.8"
		let if_val_15 = if_val_14-0.1 						//0.7
		let if_val_16 = (hund/Math.pow(2, 8))	//"0.4"
		
		
		
		
		
		
		
		
		
		let half_1 = 1050
		let starto = 2097
		
		
		
		let sum_1 = max - err - half_1
		
		
		
		
		let col_2 =  999 - 10 * (percent )
		
		
		let sum_2 = sum_1 - starto * col_2
		
		let sum_3 = sum_1 - starto * (999-10*(if_val_3+0.1)) - Math.round(starto*1.5)
		
		
		let col_4 =  999 - 10 * (percent + if_val_3 + 0.1   )
		let sarto_4 = starto * Math.pow(2, 1)
		let sum_4 = sum_3 - err_2 - sarto_4*col_4
		
    
		let col_4_5 =  999 - 10 * (if_val_5 + if_val_3 + 0.2   )
		let sarto_4_5 = starto * Math.pow(2, 1)
		let sum_4_5 = sum_3 - err_2 - sarto_4_5*col_4_5
		
		let sarto_5 =   Math.round(sarto_4_5*1.5);
		let sum_5 = sum_4_5 - sarto_5;
		
		
		
		
		
		
		let col_6 =  999 - 10 * (percent + if_val_3 + if_val_5 + 0.2   )
		let sarto_6 = starto * Math.pow(2, 2) + 1
		let sum_6 = sum_5 +err_3 -   sarto_6*col_6
		
		
		
		
		let col_6_7 =  999 - 10 * (if_val_7 + if_val_3 + if_val_5 + 0.3   )
		let sarto_6_7 = starto * Math.pow(2, 2) + 1
		let sum_6_7 = sum_5+ err_3 - sarto_6_7*col_6_7
		
		
		
		let sum_7 = sum_6_7 - Math.round(sarto_6_7*1.5)
		
		let col_8 =  999 - 10 * (percent + if_val_3 + if_val_5 + if_val_7 + 0.3   )
		let sarto_8 = starto * Math.pow(2, 3)
		let sum_8 = sum_7 - err_4 - sarto_8*col_8
		
		
		let col_8_9 =  999 - 10 * (if_val_9 + if_val_3 + if_val_5 + if_val_7 + 0.4   )
		let sarto_8_9 = starto * Math.pow(2, 3)
		let sum_8_9 = sum_7 - err_4 - sarto_8_9*col_8_9
		
		
		
		let sum_9 = sum_8_9 - Math.round(sarto_8_9*1.5)
		
		
		let col_10 =  999 - 10 * (percent + if_val_3 + if_val_5 + if_val_7 +if_val_9 + 0.4   )
		let sarto_10 = starto * Math.pow(2, 4)
		let sum_10 = sum_9 - sarto_10*col_10
		
		
		
		let col_10_11 =  999 - 10 * (if_val_11 + if_val_3 + if_val_5 + if_val_7 +if_val_9 + 0.5   )
		let sarto_10_11 = starto * Math.pow(2, 4)
		let sum_10_11 = sum_9 - err_5 - sarto_10_11*col_10_11
		
		
		
		
		let sum_11 = sum_10_11 - Math.round(sarto_10_11*1.5)
		
		let col_12 =  999 - 10 * (percent + if_val_3 + if_val_5 + if_val_7 +if_val_9 + if_val_11 + 0.5   )
		let sarto_12 = starto * Math.pow(2, 5)
		let sum_12 = sum_11 - sarto_12*col_12
		
		
		
		
		let col_12_13 =  999 - 10 * (if_val_13 + if_val_3 + if_val_5 + if_val_7 +if_val_9 + if_val_11 + 0.6   )
		let sarto_12_13 = starto * Math.pow(2, 5)
		let sum_12_13 = sum_11 - sarto_12_13*col_12_13
		
		let sum_13 = sum_12_13 - Math.round(sarto_12_13*1.5)
		
		
		
		let col_14 =  999 - 10 * (percent + if_val_3 + if_val_5 + if_val_7 +if_val_9 + if_val_11 + if_val_13+0.6   )
		let sarto_14 = starto * Math.pow(2, 6)
		let sum_14 = sum_13 - sarto_14*col_14
		
		
		
		
		
		let col_14_15 =  999 - 10 * (if_val_15 + if_val_3 + if_val_5 + if_val_7 +if_val_9 + if_val_11 + if_val_13+0.7   )
		let sarto_14_15 = starto * Math.pow(2, 6)
		let sum_14_15 = sum_13 - sarto_14_15*col_14_15
		
		
		let sum_15 = sum_14_15 - Math.round(sarto_14_15*1.5)
		
		
		let col_16 =  999 - 10 * (percent + if_val_3 + if_val_5 + if_val_7 +if_val_9 + if_val_11 + if_val_13+if_val_15+0.7   )
		let sarto_16 = starto * Math.pow(2, 7)
		let sum_16 = sum_15 - sarto_16*col_16
		
		
		
		
		
		let color19 = '#7d7d7d' // gray
		let color1 = '#ffa200' // orange
		let color2 = '#8f5b00'
		let color3 = '#fffb00' // yellow
		let color4 = '#7d7b00' 
		let color5 = '#bfff00'
		let color6 = '#6d9100'
		let color7 = '#15ff00' // green
		let color8 = '#0a7d00'
		let color9 = '#02f28a'
		let color10 = '#008a4e'
		let color11 = '#00fbff' // sky
		let color12 = '#008587'
		let color13 = '#0000ff' // blue
		let color14 = '#00009c'
		let color15 = '#dd00ff' // purple
		let color16 = '#5d006b'
		let color17 = '#ff00cc' // ping
		let color18 = '#9c007c'
		

		
		
		if (percent == hund) {
			y = max
			ctx.fillStyle = color1;
		} 
		else if (percent == if_val_1) {
			y = sum_1
			ctx.fillStyle = color2;
		}
		else if (percent >= if_val_2) {
			y = sum_2
			ctx.fillStyle = color3;
		}
		else if (percent == if_val_3) {
			ctx.fillStyle = color4;
			y = sum_3
		}
		else if (percent >= if_val_4) {
			ctx.fillStyle = color5;
			y = sum_4
		}
		else if (percent == if_val_5) {
		y = sum_5
		ctx.fillStyle = color6;
		}
		else if (percent >= if_val_6) {
			y = sum_6
			ctx.fillStyle = color7;
		}
		
		
		else if (percent == if_val_7) {
			y = sum_7
			ctx.fillStyle = color8;
		}
		
		
		else if (percent >= if_val_8) {
			y = sum_8
			ctx.fillStyle = color9;
		}
		
		
		
		
		else if (percent == if_val_9) {
			y = sum_9
			ctx.fillStyle = color10;
		}
		
		
		
		else if (percent >= if_val_10) {
			y = sum_10
			ctx.fillStyle = color11;
		}
		
		else if (percent == if_val_11) {
			y = sum_11
			ctx.fillStyle = color12;
		}
		
		
		else  {
			y = p[1]
			ctx.fillStyle = color13;
		}
		
		
		tef = 1
		ter = 5
		if (1 == tef){
			if (y-p[1] >= ter){
				ctx.fillStyle = "red";
        console.log(['red',p[0],y-p[1]])
			}
			else if (y-p[1] <= -ter){
				ctx.fillStyle = "brown";
        console.log(['brown',p[0],y-p[1]])
			}
		}
		
      

		let cy = vh - vh * (y - min) / (max - min);

		
		point(cx, cy, 3);
	  });
	}
  }

  function point(cx, cy, r = 2) {
	ctx.beginPath();
	  ctx.arc(cx, cy, r, 0, 2 * Math.PI);
	  ctx.fill();
  }

  function getData() {
	  return [
	[100 , 1072693248 ],[
	99.9 , 1072692198 ],[  //  100 - 99.9 ,  1050
	99.8 , 1072690101 ],[  //  99.9 - 99.8 , 2097
	99.7 , 1072688004 ],[  //  99.8 - 99.7 , 2097
	99.6 , 1072685906 ],[  //  99.7 - 99.6 , 2098
	99.5 , 1072683810 ],[
	99.4 , 1072681713 ],[
	99.3 , 1072679616 ],[
	99.2 , 1072677519 ],[
	99.1 , 1072675421 ],[
	99.0 , 1072673324 ],[
	98.9 , 1072671227 ],[
	98.8 , 1072669130 ],[
	98.7 , 1072667032 ],[
	98.6 , 1072664935 ],[
	98.5 , 1072662838 ],[
	98.4 , 1072660741 ],[
	98.3 , 1072658644 ],[
	98.2 , 1072656547 ],[
	98.1 , 1072654450 ],[
	98.0 , 1072652353 ],[
	97.9 , 1072650256 ],[
	97.8 , 1072648159 ],[
	97.7 , 1072646062 ],[
	97.6 , 1072643964 ],[
	97.5 , 1072641867 ],[
	97.4 , 1072639770 ],[
	97.3 , 1072637673 ],[
	97.2 , 1072635576 ],[
	97.1 , 1072633479 ],[
	97.0 , 1072631381 ],[
	90.0 , 1072484580 ],[
	89.9 , 1072482483 ],[
	75.0 , 1072170008 ],[
	74.9 , 1072167911 ],[  //  75.0 - 74.9 ,2097
	70.0 , 1072065150 ],[
	69.9 , 1072063052 ],[  //  70.0 - 69.9 ,2098
	65.0 , 1071960292 ],[
	64.9 , 1071958195 ],[  //  65.0 - 65.0 ,2097
	60.0 , 1071855435 ],[
	59.9 , 1071853337 ],[  //  60.0 - 59.9 ,2098
	55.0 , 1071750577 ],[
	54.9 , 1071748480 ],[  //  55.0 - 55.0 ,2097
	51.1 , 1071668788 ],[  // 
	51.0 , 1071666691 ],[  //  51.1 - 51.0 , 2097
	50.1 , 1071647816 ],[
	50.0 , 1071645720 ],[  //  50.1 - 50.0 , 2096
	49.9 , 1071642574 ],[  //  50.0 - 49.9 , 3146
	49.8 , 1071638380 ],[  //  49.9 - 49.8 , 4194
	45.0 , 1071437053 ],[
	44.9 , 1071432859 ],[  //  45.0 - 44.9 ,4194
	40.0 , 1071227338 ],[
	39.9 , 1071223143 ],[  //  40.0 - 39.9 ,4195
	35.0 , 1071017623 ],[
	34.9 , 1071013428 ],[  //  35.0 - 34.9 ,4195
	30.0 , 1070807907 ],[
	29.9 , 1070803713 ],[  //  30.0 - 29.9 ,4194
	25.0 , 1070598192 ],[
	24.9 , 1070591901 ],[  //  25.0- 24.9 , 6291
	20.0 , 1070180859 ],[
	19.9 , 1070172470 ],[  //  20.0 -19.9 , 8389
    
19.0 ,  1070096973 ],[
18.5 ,  1070055030 ],[
18.0 ,  1070013087 ],[
17.5 ,  1069971144 ],[
17.0 ,  1069929201 ],[
16.5 ,  1069887258 ],[
16.0 ,  1069845315 ],[
15.5 ,  1069803371 ],[  
    
	15.0 , 1069761429 ],[
	14.9 , 1069753039 ],[  //  15.0 -14.9 , 8390
	
14.5 ,  1069719485 ],[
14.0 ,  1069677542 ],[
13.5 ,  1069635599 ],[
13.0 ,  1069593657 ],[
12.5 ,  1069551713 ],[
12.0 ,  1069472022 ],[
11.5 ,  1069388135 ],[
11.0 ,  1069304249 ],[
10.5 ,  1069220363 ],[
	
	10.0 , 1069136477 ],[
	9.9 ,  1069119700 ],[  //  10.0 - 9.9 , 16777
	9.8 ,  1069102923 ],[  //  9.9 - 9.8 ,  16777
	9.7 ,  1069086146 ],[  //  9.8 - 9.7 ,  16777
	9.6 ,  1069069369 ],[  //  9.7 - 9.6 ,  16777
	9.5 ,  1069052591 ],[  //  9.6 - 9.5 ,  16778
	9.4 ,  1069035814 ],[  //  9.5 - 9.4 ,  16777
	9.3 ,  1069019037 ],[  //  9.4 - 9.3 ,  16777
	9.2 ,  1069002260 ],[  //  9.3 - 9.2 ,  16777
	9.1 ,  1068985482 ],[  //  9.2 - 9.1 ,  16778
	9.0 ,  1068968705 ],[  //  9.1 - 9.0 ,  16777
	
	
	8.5 ,  1068884819 ],[
	8.4 ,  1068868041 ],[  //  16778
	
	
	5.0 ,  1068096289 ],[
	4.9 ,  1068062735 ],[  //  5.0 - 4.9 ,  33554
	4.8 ,  1068029181 ],[  //  4.9 - 4.8 ,  33554
	4.7 ,  1067995627 ],[  //  4.8 - 4.7 ,  33554
	4.6 ,  1067962072 ],[  //  4.7 - 4.6 ,  33555
	4.5 ,  1067928518 ],[  //  4.6 - 4.5 ,  33554
	4.4 ,  1067894963 ],[  //  4.5 - 4.4 ,  33555
	4.3 ,  1067861409 ],[  //  4.4 - 4.3 ,  33554
	4.2 ,  1067827855 ],[  //  4.3 - 4.2 ,  33554
	4.1 ,  1067794300 ],[  //  4.2 - 4.1 ,  33555
	4.0 ,  1067760746 ],[  //  4.1 - 4.0 ,  33554
	3.5 ,  1067592974 ],[
	3.4 ,  1067559419 ],[  //  3.5 - 3.4 ,  33555
    
   3.1 ,  1067458756 ],[ 
    
	3.0 ,  1067400035 ],[
	2.9 ,  1067332926 ],[  //  3.0 - 2.9 ,  67109
 
 2.8 ,  1067265817 ],[
2.7 ,  1067198709 ],[
2.6 ,  1067131600 ],[   
    
    
	2.5 ,  1067064491 ],[
	2.4 ,  1066997382 ],[  //  2.5 - 2.4 ,  67109
    
   2.3 ,  1066930273 ],[
2.2 ,  1066863165 ],[
2.1 ,  1066796056 ],[ 
    
    
	2.0 ,  1066728947 ],[
	1.9 ,  1066661838 ],[  //  2.0 - 1.9 ,  67109
    
  1.8 ,  1066594729 ],[
1.7 ,  1066527621 ],[
1.6 ,  1066460512 ],[  
    
	1.5 ,  1066385013 ],[
	1.4 ,  1066250796 ],[  //  1.5 - 1. 4,  134217
    
    
  1.3 ,  1066116578 ],[
1.2 ,  1065982361 ],[
1.1 ,  1065848143 ],[  
    
	1.0 ,  1065713925 ],[
	0.9 ,  1065579708 ],[  //  1.0 - 0.9 ,  134217
	0.8 ,  1065445489 ],[  //  0.9 - 0.8 ,  134219
	0.7 ,  1065269329 ],[  //  0.8 - 0.7 ,  176160
	0.6 ,  1065000893 ],[  //  0.7 - 0.6 ,  268436
	0.5 ,  1064732458 ],[  //  0.6 - 0.5 ,  268435
	0.4 ,  1064464023 ],[  //  0.5 - 0.4 ,  268435
	0.3 ,  1064086535 ],[  //  0.4 - 0.3 ,  377488
	0.2 ,  1063549664 ],[  //  0.3 - 0.2 ,  536871
	0.1 ,  1062769523 ],[  //  0.2 - 0.1 ,  780141
	0.0 ,  1061184077 ]    //  0.1 - 0.0 ,  1585446
	];
  }
})();

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.