Andchart.html 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta
  6. name="viewport"
  7. content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
  8. />
  9. <title>图标</title>
  10. <link rel="stylesheet" type="text/css" href="css/style.css" />
  11. <script src="js/jquery-2.1.0.js"></script>
  12. </head>
  13. <body style="background: #000000">
  14. <div id="main"></div>
  15. <div id="line">
  16. <div id="Popup">
  17. <div class="time"></div>
  18. <div>流入:<span class="inflow">0.1</span></div>
  19. <div>流出:<span class="flowout">0.2</span></div>
  20. <div>收视率:<span class="ratings">0.3</span></div>
  21. </div>
  22. </div>
  23. <script src="./js/echarts.js"></script>
  24. <script type="text/javascript">
  25. $(function () {
  26. console.log(180 % 180);
  27. var time = 0;
  28. var datainit = canvas.dealdata();
  29. var i = 1;
  30. var now = new Date();
  31. canvas.draw(
  32. datainit[0][1],
  33. datainit[1][1],
  34. datainit[2][1],
  35. now.getTime()
  36. );
  37. });
  38. var page;
  39. var now = new Date();
  40. function curr(curr) {
  41. var datainit = canvas.dealdata();
  42. var old_page = page;
  43. page = Math.floor(curr / 180) + 1;
  44. if (curr > 0 && curr % 180 == 0) {
  45. page -= 1;
  46. }
  47. var start_time = now.getTime() + 180000 * (page - 1);
  48. if (old_page != page) {
  49. //todo 更新X轴
  50. canvas.draw(
  51. datainit[0][page],
  52. datainit[1][page],
  53. datainit[2][page],
  54. start_time
  55. );
  56. }
  57. if (Math.floor(curr / 180) != 0) {
  58. var p = curr - Math.floor(curr / 180) * 180;
  59. } else {
  60. var p = curr;
  61. }
  62. canvas.linemove(p);
  63. }
  64. var line1 = [
  65. 0.004, 0.002, 0.0015, 0.005, 0.006, 0.0019, 0.006, 0.0014, 0.002,
  66. 0.0013, 0.002, 0.002, 0.0015, 0.005, 0.006, 0.0019, 0.006, 0.0014,
  67. 0.002, 0.0013, 0.002, 0.002, 0.0015, 0.005, 0.006, 0.0019, 0.006,
  68. 0.0014, 0.002, 0.0013, 0.002, 0.002, 0.0015, 0.005, 0.006, 0.0019,
  69. ];
  70. var line2 = [
  71. 389, 259, 262, 324, 232, 176, 196, 214, 389, 259, 262, 324, 232, 176,
  72. 196, 214, 389, 259, 262, 324, 232, 176, 196, 214, 389, 259, 262, 324,
  73. 232, 176, 196, 214, 389, 259, 262, 324,
  74. ];
  75. var line3 = [
  76. -121, -388, -233, -309, -133, -308, -297, -283, -121, -388, -233, -309,
  77. -133, -308, -297, -283, -121, -388, -233, -309, -133, -308, -297, -283,
  78. -121, -388, -233, -309, -133, -308, -297, -283, -121, -388, -233, -309,
  79. ];
  80. var canvas = {
  81. // 横线移动
  82. linemove: function (nowdate) {
  83. //传入的当前播放时间
  84. if (1.308 * (nowdate / 3) >= 60) {
  85. $("#Popup").animate({
  86. "margin-left": "-100px",
  87. });
  88. } else {
  89. $("#Popup").animate({
  90. "margin-left": "3px",
  91. });
  92. }
  93. $("#line").css({
  94. left: "" + 1.308 * (nowdate / 3) + "%", //比例乘以步长
  95. });
  96. },
  97. //处理数据
  98. dealdata: function () {
  99. var times = Math.ceil(line1.length / 13); //次数
  100. var line1obj = {};
  101. var line2obj = {};
  102. var line3obj = {};
  103. var start = 0;
  104. for (var i = 1; i <= times; i++) {
  105. line1obj[i] = line1.slice(start, 13 * i);
  106. line2obj[i] = line1.slice(start, 13 * i);
  107. line3obj[i] = line1.slice(start, 13 * i);
  108. start = 13 * i;
  109. }
  110. return (obj = [line1obj, line2obj, line3obj]); //返回数组对象
  111. },
  112. // X轴的值
  113. Xdata: function (time) {
  114. var arr = [];
  115. for (var i = 0; i < 13; i++) {
  116. var endtime = this.timeformate(time + 15000 * i);
  117. arr.push(endtime);
  118. }
  119. return arr;
  120. },
  121. //小时以下转换成时间戳
  122. hoursformate: function (s) {
  123. //传入时间格式为'9:51:43'
  124. var arr = s.split(":");
  125. var timechou =
  126. arr[0] * 60 * 60 * 1000 + arr[1] * 60 * 1000 + arr[2] * 1000;
  127. return timechou;
  128. },
  129. //传入时间戳格式化(包含年月日的)
  130. timeformate: function (times) {
  131. var time = new Date(times);
  132. hours = time.getHours();
  133. minutes = time.getMinutes();
  134. seconds = time.getSeconds();
  135. date = hours + ":" + minutes + ":" + seconds;
  136. return date;
  137. },
  138. //画图
  139. draw: function (line1, line2, line3, time) {
  140. var myChart = echarts.init(document.getElementById("main"));
  141. var itemStyle = {
  142. normal: {},
  143. emphasis: {
  144. barBorderWidth: 0.1,
  145. shadowBlur: 10,
  146. shadowOffsetX: 0,
  147. shadowOffsetY: 0,
  148. shadowColor: "rgba(0,0,0,0.5)",
  149. },
  150. };
  151. option = {
  152. backgroundColor: "rgba(0,0,0,.8)",
  153. legend: {
  154. data: ["流入", "流出", "收视率%"],
  155. bottom: "10%",
  156. left: "center",
  157. textStyle: {
  158. color: "#fff",
  159. fontSize: 12,
  160. },
  161. },
  162. title: {
  163. text: "流入/流出",
  164. left: 5,
  165. bottom: "13%",
  166. textStyle: {
  167. color: "#fff",
  168. fontSize: 12,
  169. },
  170. },
  171. tooltip: {
  172. show: true,
  173. trigger: "axis",
  174. },
  175. xAxis: {
  176. data: canvas.Xdata(time),
  177. position: "top",
  178. axisLine: {
  179. show: false,
  180. onZero: true,
  181. },
  182. splitLine: {
  183. show: false,
  184. },
  185. splitArea: {
  186. show: false,
  187. },
  188. axisTick: {
  189. show: false,
  190. },
  191. axisLabel: {
  192. rotate: -80,
  193. interval: 0,
  194. textStyle: {
  195. color: "#fff",
  196. },
  197. },
  198. },
  199. yAxis: [
  200. {
  201. type: "value",
  202. //name:'流入/流出',
  203. offset: -5,
  204. axisLine: {
  205. show: false,
  206. },
  207. splitLine: {
  208. show: false,
  209. },
  210. splitArea: {
  211. show: false,
  212. },
  213. axisTick: {
  214. show: false,
  215. },
  216. axisLabel: {
  217. textStyle: {
  218. color: "#fff",
  219. },
  220. },
  221. nameTextStyle: {
  222. color: "#fff",
  223. },
  224. },
  225. {
  226. type: "value",
  227. scale: true,
  228. offset: -30,
  229. axisLine: {
  230. show: false,
  231. },
  232. splitLine: {
  233. show: false,
  234. },
  235. splitArea: {
  236. show: false,
  237. },
  238. axisTick: {
  239. show: false,
  240. },
  241. axisLabel: {
  242. textStyle: {
  243. color: "#fff",
  244. },
  245. },
  246. nameLocation: "middle",
  247. nameTextStyle: {
  248. color: "#fff",
  249. },
  250. },
  251. ],
  252. grid: {
  253. left: "12%",
  254. width: "85%",
  255. height: "50%",
  256. },
  257. series: [
  258. {
  259. name: "流入",
  260. type: "bar",
  261. stack: "one",
  262. barWidth: 5,
  263. itemStyle: itemStyle,
  264. label: {
  265. emphasis: {
  266. show: true,
  267. position: "top",
  268. textStyle: {
  269. color: "#fff",
  270. fontSize: 14,
  271. },
  272. },
  273. },
  274. data: line2,
  275. },
  276. {
  277. name: "流出",
  278. type: "bar",
  279. stack: "one",
  280. barWidth: 5,
  281. itemStyle: itemStyle,
  282. data: line1,
  283. },
  284. {
  285. name: "收视率%",
  286. type: "line",
  287. stack: "two",
  288. yAxisIndex: 1,
  289. itemStyle: itemStyle,
  290. data: line3,
  291. },
  292. ],
  293. };
  294. myChart.setOption(option);
  295. window.onresize = myChart.resize;
  296. },
  297. };
  298. </script>
  299. </body>
  300. </html>