Связь между графиком и выходными данными.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
float: left;
width: 100%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
D = +prompt('Value D is equal to', '0');
Q = +prompt('Value Q is equal to', '0');
function myFunctionCPT() {
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, 0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i=0; i<8; i++) {
AR[i]=(AIR[i]+Q*AF[i]+D*AW[i])/(1+Q+D);
}
$(function () {
$('#CPT-T').highcharts({
title: {
text: 'График CPT-T'
},
xAxis: {
categories: [-800, -400, 0, 400, 800, 1200, 1600]
},
series: [{
*!*
data: [-160.03, -93.89, 0, 97.172, 202.148, 318.058, 442.871],
*/!*
name: 'd=0; q=0',
type: 'spline'
}]
});
});
R=T/1000;
CPTA=94*Q/(1+Q+D);
B=R*(AR[0]+R*(AR[1]/2+R*(AR[2]/3+R*(AR[3]/4+R*(AR[4]/5+R*(AR[5]/6+R*(AR[6]/7+R*AR[7]/8)))))));
CPT=CPTA+B*1000;
document.write('CPT: ' + CPT.toFixed(3) + ' T : ' + T.toFixed(3) + 'K' +'<br>' + '<br>');
}
}
myFunctionCPT();
</script>
</head>
<body>
<div id="CPT-T"></div>
</body>
</html>
Привет, всем! Вообщем проблема состоит в следующем: хочу сделать так, что бы при подсчете CPT CPT=CPTA+B*1000; каждый последующий результат итерации CPT вносился вот сюда: data: [-160.03, -93.89, 0, 97.172, 202.148, 318.058, 442.871], где значения этого массива и есть результат CPT, и так, что бы график строился сам, при вводе параметров Q и D, и данные не вводить ручками. Нужен совет. |
DeV1doR, так?
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
float: left;
width: 100%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
D = +prompt('Value D is equal to', '0');
Q = +prompt('Value Q is equal to', '0');
var arr = [];
function myFunctionCPT() {
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, 0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i=0; i<8; i++) {
AR[i]=(AIR[i]+Q*AF[i]+D*AW[i])/(1+Q+D);
}
R=T/1000;
CPTA=94*Q/(1+Q+D);
B=R*(AR[0]+R*(AR[1]/2+R*(AR[2]/3+R*(AR[3]/4+R*(AR[4]/5+R*(AR[5]/6+R*(AR[6]/7+R*AR[7]/8)))))));
CPT=CPTA+B*1000;
arr.push(CPT)
document.getElementById('show').innerHTML += 'CPT: ' + CPT.toFixed(3) + ' T : ' + T.toFixed(3) + 'K' +'<br>' + '<br>'
// document.write();
}
}
$(function () {
myFunctionCPT();
$('#CPT-T').highcharts({
title: {
text: 'График CPT-T'
},
xAxis: {
categories: [-800, -400, 0, 400, 800, 1200, 1600]
},
series: [{
data: arr,
name: 'd='+D+'; q='+Q,
type: 'spline'
}]
});
});
</script>
</head>
<body>
<div id="CPT-T"></div>
<p id="show"></p>
</body>
</html>
|
рони,
Да оно спс, щас буду разбираться))) но, если объяснишь, был бы очень признателен. |
рони,
кажись дошло, создал массив arr со значениями CPT и добавил в график.)) |
DeV1doR,
document.write(); забудьте об этом смотрите замену строка 40 |
рони,
спс за совет, буду знать. Скажите, пожалуйста, а вот я к примеру сделал сейчас по кнопке обнуление Q,D и построение заново графика. А, как вместо обнуления, сделать добавление к тому же графику еще 1 сплайн?
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
float: left;
width: 33%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
var arr = [];
function myFunctionCPT() {
D = +prompt('Value D is equal to', '0');
Q = +prompt('Value Q is equal to', '0');
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, -0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i=0; i<8; i++) {
AR[i]=(AIR[i]+Q*AF[i]+D*AW[i])/(1+Q+D);
}
R=T/1000;
CPTA=94*Q/(1+Q+D);
B=R*(AR[0]+R*(AR[1]/2+R*(AR[2]/3+R*(AR[3]/4+R*(AR[4]/5+R*(AR[5]/6+R*(AR[6]/7+R*AR[7]/8)))))));
CPT=CPTA+B*1000;
arr.push(CPT);
document.getElementById('show').innerHTML += 'CPT: ' + CPT.toFixed(3) + ' T : ' + T + 'K' +'<br>' + '<br>'; //document.write();
}
}
function plotGraph() {
$(function () {
myFunctionCPT();
$('#CPT-T').highcharts({
title: {
text: 'График CPT-T'
},
xAxis: {
categories: [-800, -400, 0, 400, 800, 1200, 1600]
},
series: [{
data: arr,
name: 'd=' + D + '; q=' + Q,
type: 'spline'
}]
});
});
arr =[];
}
</script>
</head>
<body>
<div id="CPT-T"></div>
<div id="show"></div>
<div><input type="button" value="ok" onclick="plotGraph();"/></div>
</body>
</html>
Как я понял, это должно быть добавление новой
series: [{
data: arr,
name: 'd=' + D + '; q=' + Q,
type: 'spline'
}]
Только, вот как бы сделать, можете натолкнуть? |
DeV1doR,
:write: читайте доки :)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
float: left;
width: 33%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
function myFunctionCPT() {
D = +prompt('Value D is equal to', '0');
Q = +prompt('Value Q is equal to', '0');
var arr = [];
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, -0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i = 0; i < 8; i++) {
AR[i] = (AIR[i] + Q * AF[i] + D * AW[i]) / (1 + Q + D);
}
R = T / 1000;
CPTA = 94 * Q / (1 + Q + D);
B = R * (AR[0] + R * (AR[1] / 2 + R * (AR[2] / 3 + R * (AR[3] / 4 + R * (AR[4] / 5 + R * (AR[5] / 6 + R * (AR[6] / 7 + R * AR[7] / 8)))))));
CPT = CPTA + B * 1000;
arr.push(CPT);
document.getElementById('show').innerHTML += 'CPT: ' + CPT.toFixed(3) + ' T : ' + T + 'K' + '<br>' + '<br>'; //document.write();
}
return {
data: arr,
name: 'd=' + D + '; q=' + Q,
type: 'spline'
}
}
var series = [];
function plotGraph() {
series.push(myFunctionCPT());
$('#CPT-T').highcharts({
title: {
text: 'График CPT-T'
},
xAxis: {
categories: [-800, -400, 0, 400, 800, 1200, 1600]
},
series: series
});
}
</script>
</head>
<body>
<div id="CPT-T"></div>
<div id="show"></div>
<div><input type="button" value="ok" onclick="plotGraph();"/></div>
</body>
</html>
|
рони,
спс от души)) как я понял читать тут https://developer.mozilla.org/ru/doc...ript/Reference ?:haha: |
|
рони,
хочу совет(ссылок, не знаю, даже, как правильно вбить(), как сделать ввод, через блоки, а не вечно выскакивающее модальное окно prompt, что бы скажем, ввел данные, нажал кнопку, и вуаля строиться)) Не могу насерфить такое( |
DeV1doR,
вы про input ? |
рони,
да скорее всего. http://javascript.ru/tutorial/dom http://javascript.ru/forum/dom-windo...ennostejj.html подойдут топики? |
DeV1doR,
код как пример ... в целом нуждается в оптимизации и структурировании
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div {
float: left;
width: 33%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
function myFunctionCPT(q,d) {
D = d;
Q = q;
var arr = [];
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, -0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i = 0; i < 8; i++) {
AR[i] = (AIR[i] + Q * AF[i] + D * AW[i]) / (1 + Q + D);
}
R = T / 1000;
CPTA = 94 * Q / (1 + Q + D);
B = R * (AR[0] + R * (AR[1] / 2 + R * (AR[2] / 3 + R * (AR[3] / 4 + R * (AR[4] / 5 + R * (AR[5] / 6 + R * (AR[6] / 7 + R * AR[7] / 8)))))));
CPT = CPTA + B * 1000;
arr.push(CPT);
document.getElementById('show').innerHTML += 'CPT: ' + CPT.toFixed(3) + ' T : ' + T + 'K' + '<br>' + '<br>'; //document.write();
}
return {
data: arr,
name: 'd=' + D + '; q=' + Q,
type: 'spline'
}
}
var series = [];
function plotGraph(form) {
var q = +form.q.value, d = +form.d.value ;
form.q.value = '';
form.d.value = '';
series.push(myFunctionCPT(q,d));
$('#CPT-T').highcharts({
title: {
text: 'График CPT-T'
},
xAxis: {
categories: [-800, -400, 0, 400, 800, 1200, 1600]
},
series: series
});
return false
}
</script>
</head>
<body>
<form action="http://" onsubmit="return plotGraph(this)">
<label><input name="q">q</label>
<label><input name="d">d</label>
<input type="submit" value="ok" />
</form>
<div id="CPT-T"></div>
<div id="show"></div>
</body>
</html>
|
рони,
непонятно, буду прошариваться))) я ссылки хотел, сам сделать, а потом, спросить, если будет совсем непонятно. |
рони,
пожалуй закончу учебник http://learn.javascript.ru/form-elements. |
DeV1doR,
:write: дорогу осилит идущий ... не секрет что хоть считали, что график отражает? |
Вложений: 10
рони,
это одна из подпрограмм из Фортрана, нелинейной математической модели рабочего процесса ГТУ (Газотурбинная установка), название ее TERT. Здесь, я взял только ее часть, которая описывает Энтальпию от Температуры в ГТУ. В фортране разбираться и делать графики, автоматизацию впадло, и учить его нету смысла(преподу хрен обьясниш). Препод просил график сделать, график то я сделал, а вот, как сделать автоматизированный, сделать пока для меня трудновато. Обидно, что до некоторого сам не додумался(вроде, как все просто), но...думаю прошарусь когда-то. Если будет интересно, скинул фотки от этой программы(архив не бросается(), посмотрите.:) |
рони,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.pr {
float: left;
width: 100%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript" src="http://www.highcharts.com/media/com_demo/highslide-full.min.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
function myFunctionCPT(q,d) {
D=d;
Q=q;
var arr = [];
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, -0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i=0; i<8; i++) {
AR[i]=(AIR[i]+Q*AF[i]+D*AW[i])/(1+Q+D);
}
R=T/1000;
CPTA=94*Q/(1+Q+D);
B=R*(AR[0]+R*(AR[1]/2+R*(AR[2]/3+R*(AR[3]/4+R*(AR[4]/5+R*(AR[5]/6+R*(AR[6]/7+R*AR[7]/8)))))));
CPT=CPTA+B*1000;
arr.push(CPT);
}
return {
data: arr,
name: 'q=' + Q + '; d=' + D,
color: RandColor(),
type: 'spline',
}
}
var series = [];
function plotGraph(form) {
var q = +form.q.value, d = +form.d.value;
form.q.value = '';
form.d.value = '';
series.push(myFunctionCPT(q,d));
$('#CPT-T').highcharts({
title: {
text: 'Graph CPT-T',
x: -20 //center
},
xAxis: {
title: {
text: 'Enthalpy'
},
categories: ['-800', '-400', '0', '400', '800', '1200', '1600'],
},
yAxis: {
title: {
text: 'Temperature (K)',
}
},
series: series
});
return false;
}
function RandColor() {
var r=Math.floor(Math.random() * (256));
var g=Math.floor(Math.random() * (256));
var b=Math.floor(Math.random() * (256));
var rgb='#' + r.toString(16) + g.toString(16) + b.toString(16);
return rgb;
}
</script>
</head>
<body>
<form action="http://" onsubmit="return plotGraph(this)">
<label>Input <b>q</b> value <input name="q"></label>
<label>Input <b>d</b> value <input name="d"></label>
<input type="submit" value="ok" />
</form>
<div id="CPT-T" class="pr"></div>
</body>
</html>
какой-то баг, иногда, вместо сплайнов строятся просто точки, в чем причина? |
DeV1doR,
запятая лишняя 43 строка - пока это только могу сказать ... возможно неправильный генератор цвета |
DeV1doR,
строка 78
var rgb='rgb('+r+','+g+','+b+')';
|
рони,
да не, со сплайном все ок, смотрел пример http://www.highcharts.com/stock/demo/spline. |
Цитата:
|
DeV1doR,
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.pr {
float: left;
width: 100%;
height: 100%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/adapters/standalone-framework.js"></script>
<script type="text/javascript" src="http://www.highcharts.com/media/com_demo/highslide-full.min.js"></script>
<script type="text/javascript">
var Q, D, T, AIR, AF, AW;
var AR = new Array(8);
function myFunctionCPT(q,d) {
D=d;
Q=q;
var arr = [];
for (T = -800; T < 1601; T += 400) {
AIR = [0.238785488, -0.00900857881, 0.0193221258, 0.132711466, -0.190166916, 0.10379398, -0.0258490883, 0.00245365952];
AF = [0.367102859, 0.384334584, 0.190633867, -0.361766882, 0.263417998, -0.112618047, 0.0257271586, -0.00237417234];
AW = [0.4700077, -0.3206047, 1.196138, 1.728544, 1.55052, -0.8291961, 0.237057, -0.02773743];
for (var i=0; i<8; i++) {
AR[i]=(AIR[i]+Q*AF[i]+D*AW[i])/(1+Q+D);
}
R=T/1000;
CPTA=94*Q/(1+Q+D);
B=R*(AR[0]+R*(AR[1]/2+R*(AR[2]/3+R*(AR[3]/4+R*(AR[4]/5+R*(AR[5]/6+R*(AR[6]/7+R*AR[7]/8)))))));
CPT=CPTA+B*1000;
arr.push(CPT);
}
return {
data: arr,
name: 'q=' + Q + '; d=' + D,
color: RandColor(),
type: 'spline'
}
}
var series = [];
function plotGraph(form) {
var q = +form.q.value, d = +form.d.value;
form.q.value = '';
form.d.value = '';
series.push(myFunctionCPT(q,d));
$('#CPT-T').highcharts({
title: {
text: 'Graph CPT-T',
x: -20 //center
},
xAxis: {
title: {
text: 'Enthalpy'
},
categories: ['-800', '-400', '0', '400', '800', '1200', '1600'],
},
yAxis: {
title: {
text: 'Temperature (K)',
}
},
series: series
});
return false;
}
function RandColor() {
var r=Math.floor(Math.random() * (256));
var g=Math.floor(Math.random() * (256));
var b=Math.floor(Math.random() * (256));
var rgb='rgb('+r+','+g+','+b+')';
return rgb;
}
</script>
</head>
<body>
<form action="http://" onsubmit="return plotGraph(this)">
<label>Input <b>q</b> value <input name="q"></label>
<label>Input <b>d</b> value <input name="d"></label>
<input type="submit" value="ok" />
</form>
<div id="CPT-T" class="pr"></div>
</body>
</html>
|
рони,
ну вообщем проблема была здесь, вы правы var rgb='#' + r.toString(16) + g.toString(16) + b.toString(16); только не понял почему, смотрел доки, там был такой формат записи. color: '#22aa3f', (пример) На счет сплайна, он задается в series, как тип, если не задать, будет по дефолту линия. ПС: Не понял зачем + после операндов var rgb='rgb('+r+','+g+','+b+')'; |
Цитата:
'#22aa3f' это правильно 6 или 3 цифр '#22aa3' а это уже сбой - но он генерится 4 или 5 |
рони,
понял, спасиб. |
я говорил про неправильный формат обьекта -- лишнюю запятую !!! после которой уже нет параметров
а не про параметры Цитата:
|
рони,
увидел, затупил соррь, исправил. |
| Часовой пояс GMT +3, время: 21:32. |