SVG折线图

效果:

 1 <!DOCTYPE html >
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 5 <style type="text/css" media="screen">
 6 path:hover {
 7     fill: yellow;
 8 }
 9 .svg{border:0px solid #0CF;}
10 </style>
11 <title>SVG折线图</title>
12 </head>
13 <body>
14 <?php
15 $y_max = 12000; //Y坐标最大值
16 ?>
17 <svg width="960" height="200" class="svg">
18 <g class="axis" zIndex="2">
19     <!--绘制X坐标-->
20     <path fill="none" d="M 60 160 L 960 160" stroke="#6a7791" stroke-width="1" zIndex="7" visibility="visible"/>
21     <?php
22     // 绘制x坐标
23     $delta = (960 - 60) / 24;
24     for($i = 0; $i < 24; $i++) {
25         $x = 80 + $delta * $i;
26     ?>
27     <path fill="none" d="M <?=$x?> 160 L <?=$x?> 170" stroke="#C0D0E0" stroke-width="1" opacity="1"/>
28     <?php }?>
29
30     <?php
31     // 绘制x坐标文字
32     $delta = (960 - 60) / 12;
33     for($i = 0; $i < 12; $i++) {
34         $x = 80 + $delta * $i;
35         $text = $i*2;
36         if($text < 10) {
37             $text = ‘0‘ . $text;
38         }
39     ?>
40     <text x="<?=$x?>" y="180" text-anchor="middle" style="color:#606060;cursor:default;font-size:11px;fill:#606060;" opacity="1"><?=$text?>:00</text>
41     <?php }?>
42
43     <!--绘制Y坐标-->
44     <?php
45     // 绘制x坐标文字
46     $delta = (160 - 10) / 3;
47     for($i = 0; $i < 3; $i++) {
48         $y = 10 + $delta * $i;
49         $text = $y_max / 3 * (3 - $i);
50         $text = ceil($text);
51     ?>
52     <path fill="none" d="M 60 <?=$y?> L 960 <?=$y?>" stroke="#eae9e9" stroke-width="1" zIndex="1" opacity="1"/>
53         <text x="20" y="<?=$y+5?>" width="100" text-anchor="right" style="color:#606060;cursor:default;font-size:11px;fill:#606060;" opacity="1"><?=$text?></text>
54     <?php }?>
55 </g>
56
57 <!--绘制折线-->
58 <?php
59 $data = array();
60 for($i = 0; $i < 24; $i++) {
61     $data[] = rand(0, $y_max);
62 }
63 ?>
64
65 <?php
66 $delta_x = (960 - 60) / 24; //刻度间隔
67 $y_start = 0;
68 $line_point = ‘‘;
69 $line_point_tip = ‘‘;
70 foreach($data as $k=>$v) {
71     $x = 80 + $delta_x * ($k);
72     $y = (150 * $v) / $y_max;
73     $y = 150 - $y;
74     if(‘0‘ == $k) {
75         $y_start = "M 80 $y";
76     } else {
77         $line_point .= " L $x $y";
78     }
79     $line_point_tip .= ‘ ‘ . $v;
80 }
81 ?>
82 <g class="polyline" zIndex="3">
83     <!--<?=$line_point_tip?>-->
84     <path onmouseover="this.style.fill=‘none‘" fill="none" d="<?=$y_start?> <?=$line_point?> C" stroke="#f15755" stroke-width="2"/>
85 </g>
86 </svg>
87 </body>
88 </html>
时间: 2024-10-11 06:43:18

SVG折线图的相关文章

Morris.js和flot绘制折线图的比较

[文章摘要] 最近用开源的AdminLTE做框架感觉效果特别好,其针对图表库Morris.js和flot都提供了不错的支持,也都提供了这两者的例子.不过Morris.js是基于Raphael.js来的,也就是其使用SVG和VML来绘制图形,而flot则是使用Canvas进行绘制,在绘制效率和浏览器兼容性等方面会有出入,同时两者需要的数据格式也不相同.本文中对两者的使用和性能进行了比较. [文章索引] Morris.js的使用 flot的使用 性能比较 [一.Morris.js的使用] Morri

【D3.js】Focus + Context 折线图

利用D3.js库实现Focus+Context的折线图,读取data.tsv文件数据 index.html <!DOCTYPE html> <meta charset="utf-8"> <style> svg { font: 10px sans-serif; } .axis path, .axis line { fill: none; stroke: #000; shape-rendering: crispEdges; } .line { fill:

D3入门系列(2)--简单的条形图、折线图

SVG画布 HTML 5 提供两种强有力的"画布":SVG 和 Canvas. SVG的特点: SVG 绘制的是矢量图,因此对图像进行放大不会失真 基于 XML,可以为每个元素添加 JavaScript 事件处理器 每个图形均视为对象,更改对象的属性,图形也会改变 不适合游戏应用 Canvas特点: 绘制的是位图,图像放大后会失真 不支持事件处理器 能够以 .png 或 .jpg 格式保存图像 适合游戏应用 那么,对于数据可视化,SVG的优势就显而易见了,而且D3中很多图形生成器也是只

原生js实现折线图

不借助Echarts等图形框架原生JS快速实现折线图效果 1. 折线图效果预览 例如下图所示的折线图效果实现就很简单: 调用下面这段JS代码中的方法就好了: 假设页面上需要连接的所有点元素集合是eleDots,则页面上执行下fnLineChart(eleDots)效果就出来了. 当然,这段JS只处理长度和角度这两个动态属性,其他固定的样式还需要CSS配合,例如,线条的粗细和线条颜色,例如下面这个粗细2像素的绿色折线,可以这样: 2. 斜线效果实现的原理 1)计算两点之间的直线长度 这个应该属于初

用canvas绘制折线图

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>用canvas绘制折线图</title> 6 </head> 7 <body> 8 <canvas id="cv"></canvas> 9 </body> 1

iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点.终止点(也称锚点)以及两个相互分离的中间点. 滑动两个中间点,贝塞尔曲线的形状会发生变化. UIBezierPath :对象是CGPathRef数据类型的封装,可以方便的让我们画出 矩形 . 椭圆 或者 直线和曲线的组合形状 初始化方法: + (instancetype)bezierPath; /

Python中使用matplotlib 如何绘制折线图?

本文和大家分享的主要是python开发中matplotlib 绘制折线图相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. matplotlib 1.安装matplotlib ① linux系统安装 # 安装matplotlib模块 $ sudo apt-get install python3-matplotlib# 如果是python2.7 执行如下命令 $ sudo apt-get install python-matplotlib# 如果你安装较新的Python,安装模块一乐

自定义view—折线图

学习导航 第一节:http://blog.csdn.net/bobo8945510/article/details/53197727 -自定义View-自定义属性及引用 第二节:http://blog.csdn.net/bobo8945510/article/details/53203233 自定义view02-图形绘制 第三节:http://blog.csdn.net/bobo8945510/article/details/53213938 自定义View-绘图基础之Path 第四节:http

手把手教你实现折线图之------安卓最好用的图表库hellocharts之最详细的使用介绍

因为项目需要搞一个折线图,按照日期显示相应的成绩,所以有了本文. 以前用过一次XCL-chart,但是感觉只适合固定图表,不去滑动的那种,因为你一滑动太卡了你懂得(毕竟作者好久没更新优化了),拙言大神我开玩笑的 ,毕竟我加你的群大半年了 - - 第二研究了一下achartenginee图表框架,一不美观,二 achartenginee的可定制性实在不敢恭维,做出来的图表根本不能满足需求 再试了一次网传最好用的MPchart和hellochart同一年出来的,但是要比hellochaet早点.说实