Рассчитать угол между прямой и горизонтальной осью - PullRequest
3 голосов
/ 08 марта 2019

Рассмотрим следующий набор игрушечных данных:

clear
input double(x y)
  -.03184700384736061                   .
 -.031028195071294902                   .
 -.030209386295229197                   .
  -.02939057751916349                   .
 -.028571768743097782                   .
 -.027752959967032073                   .
 -.026934151190966368                   .
 -.026115342414900662                   .
 -.025296533638834953                   .
 -.024477724862769244                   .
  -.02365891608670354                   .
 -.022840107310637833                   .
 -.022021298534572124                   .
 -.021202489758506415                   .
  -.02038368098244071                   .
 -.019564872206375004                   .
 -.018746063430309295  -374.9212686061859
  -.01792725465424359  -358.5450930848718
  -.01710844587817788  -342.1689175635576
 -.016289637102112176  -325.7927420422435
 -.015470828326046467 -309.41656652092934
 -.014652019549980761  -293.0403909996152
 -.013833210773915052 -276.66421547830106
 -.013014401997849347 -260.28803995698695
 -.012195593221783638 -243.91186443567275
 -.011376784445717929  -227.5356889143586
 -.010557975669652223 -211.15951339304448
 -.009739166893586518 -194.78333787173037
 -.008920358117520809 -178.40716235041617
   -.0081015493414551   -162.030986829102
 -.007282740565389394  -145.6548113077879
 -.006463931789323689 -129.27863578647379
  -.00564512301325798  -112.9024602651596
-.0048263142371922745   -96.5262847438455
 -.004007505461126569  -80.15010922253138
 -.003188696685060881 -63.773933701217615
-.0023698879089951753 -47.397758179903505
-.0015510791329294699   -31.0215826585894
-.0007322703568637644 -14.645407137275287
.00008653841920196886  1.7307683840393773
 .0009053471952676778  18.106943905353557
 .0017241559713333868  34.483119426667734
  .002542964747399089   50.85929494798177
 .0033617735234647977   67.23547046929596
  .004180582299530507   83.61164599061013
  .004999391075596209   99.98782151192417
  .005818199851661918  116.36399703323835
  .006637008627727627  132.74017255455254
  .007455817403793336   149.1163480758667
  .008274626179859072  165.49252359718145
  .009093434955924774   181.8686991184955
  .009912243731990483  198.24487463980967
  .010731052508056192  214.62105016112383
  .011549861284121894   230.9972256824379
  .012368670060187603  247.37340120375205
  .013187478836253312   263.7495767250662
  .014006287612319014   280.1257522463803
  .014825096388384723  296.50192776769444
  .015643905164450425   312.8781032890085
  .016462713940516162   329.2542788103232
   .01728152271658187   345.6304543316374
   .01810033149264758   362.0066298529516
   .01891914026871329   378.3828053742658
   .01973794904477899  394.75898089557984
    .0205567578208447    411.135156416894
   .02137556659691041   427.5113319382082
   .02219437537297611   443.8875074595222
   .02301318414904182   460.2636829808364
   .02383199292510753  476.63985850215056
   .02465080170117323   493.0160340234646
  .025469610477238967  509.39220954477935
  .026288419253304676   525.7683850660935
  .027107228029370385   542.1445605874077
  .027926036805436087   558.5207361087217
  .028744845581501796   574.8969116300359
  .029563654357567498     591.27308715135
  .030382463133633207   607.6492626726641
  .031201271909698916   624.0254381939783
   .03202008068576463   640.4016137152927
  .032838889461830334   656.7777892366066
   .03365769823789605    673.153964757921
   .03447650701396174   689.5301402792347
  .035295315790027454   705.9063158005491
  .036114124566093184   722.2824913218636
    .0369329333421589    738.658666843178
   .03775174211822459   755.0348423644917
  .038570550894290304    771.411017885806
  .039389359670356006   787.7871934071201
   .04020816844642172   804.1633689284345
   .04102697722248744   820.5395444497487
   .04184578599855314   836.9157199710628
   .04266459477461884   853.2918954923769
   .04348340355068454   869.6680710136909
   .04430221232675029   886.0442465350058
   .04512102110281599   902.4204220563198
  .045939829878881705   918.7965975776341
   .04675863865494739   935.1727730989479
   .04757744743101311   951.5489486202622
   .04839625620707881   967.9251241415762
   .04921506498314453   984.3012996628905
   .05003387375921024  1000.6774751842048
   .05085268253527593  1017.0536507055186
   .05167149131134165   1033.429826226833
   .05249030008740735   1049.806001748147
   .05330910886347309  1066.1821772694618
  .054127917639538795  1082.5583527907759
    .0549467264156045    1098.93452831209
    .0557655351916702   1115.310703833404
  .056584343967735914  1131.6868793547183
  .057403152743801616  1148.0630548760323
   .05822196151986733  1164.4392303973466
   .05904077029593305  1180.8154059186609
  .059859579071998736                   .
   .06067838784806445                   .
   .06149719662413018                   .
    .0623160054001959                   .
   .06313481417626159                   .
    .0639536229523273                   .
     .064772431728393                   .
   .06559124050445872                   .
   .06641004928052442                   .
   .06722885805659014                   .
   .06804766683265584                   .
   .06886647560872154                   .
   .06968528438478726                   .
   .07050409316085299                   .
    .0713229019369187                   .
   .07214171071298439                   .
   .07296051948905011                   .
   .07377932826511581                   .
   .07459813704118153                   .
   .07541694581724723                   .
   .07623575459331294                   .
   .07705456336937865                   .
   .07787337214544435                   .
   .07869218092151009                   .
   .07951098969757579                   .
    .0803297984736415                   .
    .0811486072497072                   .
   .08196741602577291                   .
   .08278622480183861                   .
   .08360503357790433                   .
   .08442384235397003                   .
   .08524265113003573                   .
   .08606145990610145                   .
   .08688026868216718                   .
    .0876990774582329                   .
    .0885178862342986                   .
    .0893366950103643                   .
      .09015550378643                   .
   .09097431256249572                   .
   .09179312133856142                   .
   .09261193011462714                   .
   .09343073889069284                   .
   .09424954766675855                   .
   .09506835644282427                   .
   .09588716521888999                   .
   .09670597399495567                   .
   .09752478277102139                   .
    .0983435915470871                   .
   .09916240032315282                   .
   .09998120909921851                   .
   .10080001787528423                   .
   .10161882665134994                   .
   .10243763542741566                   .
   .10325644420348135                   .
   .10407525297954706                   .
   .10489406175561278                   .
    .1057128705316785                   .
   .10653167930774421                   .
    .1073504880838099                   .
   .10816929685987561                   .
   .10898810563594133                   .
   .10980691441200705                   .
   .11062572318807273                   .
   .11144453196413845                   .
   .11226334074020417                   .
   .11308214951626988                   .
    .1139009582923356                   .
   .11471976706840128                   .
     .115538575844467                   .
   .11635738462053272                   .
   .11717619339659843                   .
   .11799500217266412                   .
   .11881381094872984                   .
   .11963261972479555                   .
   .12045142850086127                   .
   .12127023727692696                   .
   .12208904605299267                   .
   .12290785482905839                   .
    .1237266636051241                   .
   .12454547238118982                   .
    .1253642811572555                   .
   .12618308993332122                   .
   .12700189870938694                   .
   .12782070748545266                   .
   .12863951626151834                   .
   .12945832503758406                   .
   .13027713381364978                   .
    .1310959425897155                   .
   .13191475136578118                   .
    .1327335601418469                   .
    .1335523689179126                   .
   .13437117769397833                   .
   .13518998647004404                   .
   .13600879524610973                   .
   .13682760402217545                   .
   .13764641279824116                   .
   .13846522157430688                   .
   .13928403035037257                   .
   .14010283912643828                   .
     .140921647902504                   .
   .14174045667856972                   .
   .14255926545463543                   .
   .14337807423070112                   .
   .14419688300676684                   .
   .14501569178283255                   .
   .14583450055889827                   .
   .14665330933496395                   .
   .14747211811102967                   .
    .1482909268870954                   .
    .1491097356631611                   .
    .1499285444392268                   .
    .1507473532152925                   .
   .15156616199135822                   .
   .15238497076742394                   .
   .15320377954348965                   .
   .15402258831955534                   .
   .15484139709562106                   .
   .15566020587168677                   .
    .1564790146477525                   .
   .15729782342381818                   .
    .1581166321998839                   .
    .1589354409759496                   .
   .15975424975201533                   .
   .16057305852808104                   .
   .16139186730414673                   .
   .16221067608021245                   .
   .16302948485627816                   .
   .16384829363234388                   .
   .16466710240840957                   .
   .16548591118447528                   .
     .166304719960541                   .
    .1671235287366067                   .
    .1679423375126724                   .
   .16876114628873812                   .
   .16957995506480383                   .
   .17039876384086955                   .
   .17121757261693527                   .
   .17203638139300095                   .
   .17285519016906667                   .
   .17367399894513239                   .
    .1744928077211981                   .
    .1753116164972638                   .
    .1761304252733295                   .
   .17694923404939522                   .
   .17776804282546094                   .
   .17858685160152665                   .
   .17940566037759234                   .
   .18022446915365806                   .
   .18104327792972377                   .
    .1818620867057895                   .
   .18268089548185518                   .
    .1834997042579209                   .
    .1843185130339866                   .
   .18513732181005232                   .
     .185956130586118                   .
   .18677493936218373                   .
   .18759374813824944                   .
   .18841255691431516                   .
   .18923136569038088                   .
   .19005017446644656                   .
   .19086898324251228                   .
     .191687792018578                   .
    .1925066007946437                   .
    .1933254095707094                   .
   .19414421834677512                   .
   .19496302712284083                   .
   .19578183589890655                   .
   .19660064467497224                   .
   .19741945345103795                   .
   .19823826222710367                   .
   .19905707100316938                   .
    .1998758797792351                   .
    .2006946885553008                   .
    .2015134973313665                   .
   .20233230610743222                   .
   .20315111488349794                   .
   .20396992365956362                   .
   .20478873243562934                   .
   .20560754121169506                   .
   .20642634998776077                   .
    .2072451587638265                   .
   .20806396753989218                   .
    .2088827763159579                   .
    .2097015850920236                   .
   .21052039386808932                   .
     .211339202644155                   .
   .21215801142022073                   .
   .21297682019628644                   .
end

Рассмотрим теперь следующий график:

twoway line y x || scatteri 0 0 "Line A", msymbol(none) msymbol(none) /// 
mlabgap(0) mlabposition(0) mlabangle(60) legend(off)

Очевидно, что угол прямой A относительно x-axis составляет 60 градусов (указывается вручную):

enter image description here

Я пытался вычислить этот угол, следуя совету, который я нашел в аналогичном посте :

summarize y
scalar y1 = r(min)
scalar y2 = r(max)

summarize x
scalar x1 = r(min)
scalar x2 = r(max)

scalar dy = y2 - y1
scalar dx = x2 - x1

display (180 / _pi) * atan2(dy, dx)
89.990983

Почему Stata создает график с углом 60 вместо 90 градусов?

Если я установлю соотношение сторон графика на 1, угол, по-видимому, изменится на 68, что еще далеко от расчетного значения:

twoway line y x || scatteri 0 0 "Line A", msymbol(none) msymbol(none) /// 
mlabgap(0) mlabposition(0) mlabangle(68) legend(off) aspectratio(1)

enter image description here

Как последовательно рассчитать угол с учетом разницы в масштабах и соотношении сторон?

1 Ответ

0 голосов
/ 08 марта 2019

x и оси y находятся в разных масштабах на графике, так что это не соотношение сторон 1: 1, и множество углов будет нарисовано иначе, чем ожидаемые с одинаковым масштабом оси. Это значение по умолчанию в нескольких графических пакетах, потому что обычно оно лучше распространяет данные в графике.

...