前端控件宝典:UI组件的完整指南(7)——图表自定义柱状颜色【源码在文末并附解释】

桃扇骨 2023-10-15 22:29 6阅读 0赞

在当今数字时代,Web应用程序已经成为我们生活的重要组成部分。无论是社交媒体平台、电子商务网站还是在线工具,现代Web应用程序的核心是其用户界面(UI)。而用户界面的关键组成部分之一就是前端控件。

前端控件是Web开发中不可或缺的元素,它们为我们提供了构建各种交互性和功能丰富的Web应用程序的工具。无论您是一名新手前端开发者还是经验丰富的工程师,了解和掌握前端控件都是提高Web开发技能的关键。

本博客系列将带您深入探索前端控件的世界。我们将详细研究各种UI组件,从简单的按钮和表单控件到复杂的图表和地图集成,无所不包。无论您是想要提高自己的技能,还是寻找构建令人印象深刻的用户体验的方法,这个系列都将为您提供宝贵的知识。

在接下来的几篇文章中,我们将探讨不同类型的前端控件,讨论它们的用途、最佳实践和实际示例。无论您的兴趣是构建漂亮的UI、提高用户体验或学习最新的Web开发技术,这个系列都将有所帮助。

准备好探索前端控件的魅力吗?让我们开始吧!

一,演示地址

访问网址:http://59.110.22.223:8080/Model\_qianduan/bar\_custom\_bar\_color.html

image-20230914113312219

二、控件常识

自定义控件
自定义控件是已编译的服务器端控件,它将用户界面和其他功能都封装起来到可复用的包中,自定义控件和标准的控件相比,除了他们一个不同的标记前缀,并且必须进行显示注册和部署以外并没有什么不同。此外,自定义控件拥有自己的对象模型,能够触发事件,并支持Microsoft Visual Studio 的所有设计是特性,诸如属性窗口、可视化设计器、属性生成器和工具箱。

上面讲了用户控件,它只需要想创建页面一样,在设计器里拖拉系统控件设计界面,然后为这些控件添加必须的事件代码就可以,它纯粹就是组合。而自定义控件是“从头实现”控件的底层功能,编写一个类继承自Control,并实现INamingContainer接口,甚至重写控件的Render方法,控制控件生成的html代码,以及实现响应从浏览器传回数据的事件和处理传回的数据,它不仅叫自定义控件,也可以叫做复合控件。

自定义控件使用的时候,可以点击vs软件右边上的工具箱,在工具箱上空白处点击右键选择项–在.NET Framework组件选项卡下点击“浏览”–找到你要添加的自定义控件(.dll文件)–打开–确定。这样你就可以在工具箱中将那个自定义控件拖出来使用了。常用的控件有:分页控件、文本编辑器、水晶报表、ActiveReports等。

开发方法:
1、自定义控件的开发,即继承如Control的积累实现服务器控件。

2、开发用户控件。

创建用户控件与创建普通asp.net web页面类似,但是还是有些不同。步骤是:

① 创建一个.ascx的文本文件。这是用户控件和asp.net web页面的第一个不同点,后者使用的扩展名为.aspx。

②在文本文件顶部添加@Control指令,并通过language属性来设置所选择的编程语言,这是用户控件和web页面的第二个不同点。(后者使用@page指令)。

③向文本文件添加HTML标记文本和asp.net服务器控件。可以添加html、body和form之外的任何html标记,这是因为用户控件不能单独使用,必须做为web页面的一部分使用。这是用户控件和web页面的第三个不同点。

三,源码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Awesome-pyecharts</title>
  6. <script type="text/javascript" src="https://assets.pyecharts.org/assets/v5/echarts.min.js"></script>
  7. </head>
  8. <body >
  9. <div id="e649d2d1c8d44e2e8c37e56c3e204020" class="chart-container" style="width:900px; height:500px; "></div>
  10. <script>
  11. var chart_e649d2d1c8d44e2e8c37e56c3e204020 = echarts.init(
  12. document.getElementById('e649d2d1c8d44e2e8c37e56c3e204020'), 'white', {renderer: 'canvas'});
  13. var option_e649d2d1c8d44e2e8c37e56c3e204020 = {
  14. "animation": true,
  15. "animationThreshold": 2000,
  16. "animationDuration": 1000,
  17. "animationEasing": "cubicOut",
  18. "animationDelay": 0,
  19. "animationDurationUpdate": 300,
  20. "animationEasingUpdate": "cubicOut",
  21. "animationDelayUpdate": 0,
  22. "aria": {
  23. "enabled": false
  24. },
  25. "color": [
  26. "#5470c6",
  27. "#91cc75",
  28. "#fac858",
  29. "#ee6666",
  30. "#73c0de",
  31. "#3ba272",
  32. "#fc8452",
  33. "#9a60b4",
  34. "#ea7ccc"
  35. ],
  36. "series": [
  37. {
  38. "type": "bar",
  39. "name": "\u5546\u5bb6A",
  40. "legendHoverLink": true,
  41. "data": [
  42. 53,
  43. 36,
  44. 122,
  45. 46,
  46. 75,
  47. 122,
  48. 106
  49. ],
  50. "realtimeSort": false,
  51. "showBackground": false,
  52. "stackStrategy": "samesign",
  53. "cursor": "pointer",
  54. "barMinHeight": 0,
  55. "barCategoryGap": "20%",
  56. "barGap": "30%",
  57. "large": false,
  58. "largeThreshold": 400,
  59. "seriesLayoutBy": "column",
  60. "datasetIndex": 0,
  61. "clip": true,
  62. "zlevel": 0,
  63. "z": 2,
  64. "label": {
  65. "show": true,
  66. "margin": 8
  67. },
  68. "itemStyle": {
  69. "color": function (params) { if (params.value > 0 && params.value < 50) { return 'red'; } else if (params.value > 50 && params.value < 100) { return 'blue'; } return 'green'; }
  70. }
  71. },
  72. {
  73. "type": "bar",
  74. "name": "\u5546\u5bb6B",
  75. "legendHoverLink": true,
  76. "data": [
  77. 142,
  78. 120,
  79. 113,
  80. 85,
  81. 56,
  82. 42,
  83. 87
  84. ],
  85. "realtimeSort": false,
  86. "showBackground": false,
  87. "stackStrategy": "samesign",
  88. "cursor": "pointer",
  89. "barMinHeight": 0,
  90. "barCategoryGap": "20%",
  91. "barGap": "30%",
  92. "large": false,
  93. "largeThreshold": 400,
  94. "seriesLayoutBy": "column",
  95. "datasetIndex": 0,
  96. "clip": true,
  97. "zlevel": 0,
  98. "z": 2,
  99. "label": {
  100. "show": true,
  101. "margin": 8
  102. },
  103. "itemStyle": {
  104. "color": function (params) { if (params.value > 0 && params.value < 50) { return 'red'; } else if (params.value > 50 && params.value < 100) { return 'blue'; } return 'green'; }
  105. }
  106. },
  107. {
  108. "type": "bar",
  109. "name": "\u5546\u5bb6C",
  110. "legendHoverLink": true,
  111. "data": [
  112. 107,
  113. 113,
  114. 80,
  115. 146,
  116. 57,
  117. 23,
  118. 111
  119. ],
  120. "realtimeSort": false,
  121. "showBackground": false,
  122. "stackStrategy": "samesign",
  123. "cursor": "pointer",
  124. "barMinHeight": 0,
  125. "barCategoryGap": "20%",
  126. "barGap": "30%",
  127. "large": false,
  128. "largeThreshold": 400,
  129. "seriesLayoutBy": "column",
  130. "datasetIndex": 0,
  131. "clip": true,
  132. "zlevel": 0,
  133. "z": 2,
  134. "label": {
  135. "show": true,
  136. "margin": 8
  137. },
  138. "itemStyle": {
  139. "color": function (params) { if (params.value > 0 && params.value < 50) { return 'red'; } else if (params.value > 50 && params.value < 100) { return 'blue'; } return 'green'; }
  140. }
  141. }
  142. ],
  143. "legend": [
  144. {
  145. "data": [
  146. "\u5546\u5bb6A",
  147. "\u5546\u5bb6B",
  148. "\u5546\u5bb6C"
  149. ],
  150. "selected": {},
  151. "show": true,
  152. "padding": 5,
  153. "itemGap": 10,
  154. "itemWidth": 25,
  155. "itemHeight": 14,
  156. "backgroundColor": "transparent",
  157. "borderColor": "#ccc",
  158. "borderWidth": 1,
  159. "borderRadius": 0,
  160. "pageButtonItemGap": 5,
  161. "pageButtonPosition": "end",
  162. "pageFormatter": "{current}/{total}",
  163. "pageIconColor": "#2f4554",
  164. "pageIconInactiveColor": "#aaa",
  165. "pageIconSize": 15,
  166. "animationDurationUpdate": 800,
  167. "selector": false,
  168. "selectorPosition": "auto",
  169. "selectorItemGap": 7,
  170. "selectorButtonGap": 10
  171. }
  172. ],
  173. "tooltip": {
  174. "show": true,
  175. "trigger": "item",
  176. "triggerOn": "mousemove|click",
  177. "axisPointer": {
  178. "type": "line"
  179. },
  180. "showContent": true,
  181. "alwaysShowContent": false,
  182. "showDelay": 0,
  183. "hideDelay": 100,
  184. "enterable": false,
  185. "confine": false,
  186. "appendToBody": false,
  187. "transitionDuration": 0.4,
  188. "textStyle": {
  189. "fontSize": 14
  190. },
  191. "borderWidth": 0,
  192. "padding": 5,
  193. "order": "seriesAsc"
  194. },
  195. "xAxis": [
  196. {
  197. "show": true,
  198. "scale": false,
  199. "nameLocation": "end",
  200. "nameGap": 15,
  201. "gridIndex": 0,
  202. "inverse": false,
  203. "offset": 0,
  204. "splitNumber": 5,
  205. "minInterval": 0,
  206. "splitLine": {
  207. "show": true,
  208. "lineStyle": {
  209. "show": true,
  210. "width": 1,
  211. "opacity": 1,
  212. "curveness": 0,
  213. "type": "solid"
  214. }
  215. },
  216. "data": [
  217. "\u54c8\u58eb\u5947",
  218. "\u8428\u6469\u8036",
  219. "\u6cf0\u8fea",
  220. "\u91d1\u6bdb",
  221. "\u7267\u7f8a\u72ac",
  222. "\u5409\u5a03\u5a03",
  223. "\u67ef\u57fa"
  224. ]
  225. }
  226. ],
  227. "yAxis": [
  228. {
  229. "show": true,
  230. "scale": false,
  231. "nameLocation": "end",
  232. "nameGap": 15,
  233. "gridIndex": 0,
  234. "inverse": false,
  235. "offset": 0,
  236. "splitNumber": 5,
  237. "minInterval": 0,
  238. "splitLine": {
  239. "show": true,
  240. "lineStyle": {
  241. "show": true,
  242. "width": 1,
  243. "opacity": 1,
  244. "curveness": 0,
  245. "type": "solid"
  246. }
  247. }
  248. }
  249. ],
  250. "title": [
  251. {
  252. "show": true,
  253. "text": "Bar-\u81ea\u5b9a\u4e49\u67f1\u72b6\u989c\u8272",
  254. "target": "blank",
  255. "subtarget": "blank",
  256. "padding": 5,
  257. "itemGap": 10,
  258. "textAlign": "auto",
  259. "textVerticalAlign": "auto",
  260. "triggerEvent": false
  261. }
  262. ]
  263. };
  264. chart_e649d2d1c8d44e2e8c37e56c3e204020.setOption(option_e649d2d1c8d44e2e8c37e56c3e204020);
  265. </script>
  266. </body>
  267. </html>

四,源码解释

这段HTML代码包含了一个使用Pyecharts库创建的动态条形图(bar chart)的可视化。让我逐步解释这段代码的各个部分:

  1. <!DOCTYPE html>:这是HTML文档的文档类型声明,指定了文档使用的HTML版本。
  2. <html>:HTML文档的根元素,包含了整个HTML内容。
  3. <head>:这是HTML文档的头部分,通常包含了文档的元数据和引用的外部资源。

    • <meta charset="UTF-8">:设置文档的字符编码为UTF-8,以支持各种字符和语言。
    • <title>Awesome-pyecharts</title>:设置文档的标题,显示在浏览器的标签页上。
    • <script>:引用了Pyecharts所需的JavaScript库,用于创建交互式图表。
  4. <body>:HTML文档的主体部分,包含了网页的实际内容。

    • <div id="e649d2d1c8d44e2e8c37e56c3e204020" class="chart-container" style="width:900px; height:500px;"></div>:创建一个<div>元素,用于容纳图表。id属性用于标识这个<div>,后面的JavaScript代码将使用这个ID来初始化图表。class属性用于指定CSS样式类,可以用来自定义图表的外观和布局。style属性设置了<div>的宽度和高度,以确定图表的尺寸。
    • <script>:这是JavaScript代码块,用于创建和配置图表。

      • var chart_e649d2d1c8d44e2e8c37e56c3e204020 = echarts.init(document.getElementById('e649d2d1c8d44e2e8c37e56c3e204020'), 'white', {renderer: 'canvas'});:这行代码初始化了一个Echarts图表对象,并将其与前面创建的<div>关联起来。echarts.init()方法接受两个参数,第一个参数是要容纳图表的DOM元素,通过getElementById方法找到的。第二个参数是图表的背景颜色,这里设置为白色。还有一个可选的第三个参数,用于指定渲染器,这里使用了canvas渲染器。
      • var option_e649d2d1c8d44e2e8c37e56c3e204020 = { ... };:这是一个包含了图表配置选项的JavaScript对象。该对象定义了图表的各种属性,包括数据、颜色、标签等。
      • chart_e649d2d1c8d44e2e8c37e56c3e204020.setOption(option_e649d2d1c8d44e2e8c37e56c3e204020);:这行代码将配置选项应用于图表对象,以创建具体的图表。
  5. 结尾的</body></html>标签分别表示HTML文档的主体和文档的结束。

总之,这段代码使用了Pyecharts库和Echarts JavaScript库来创建一个动态的条形图,并将其嵌入到HTML页面中,以在浏览器中显示。图表具有一些自定义的配置选项,例如颜色和数据,可以根据需要进行修改和定制。图表的交互性允许用户通过鼠标悬停和点击来查看数据点的详细信息。

发表评论

表情:
评论列表 (有 0 条评论,6人围观)

还没有评论,来说两句吧...

相关阅读