- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 CSS 和 Javascript 的新手,所以我正在努力尝试制作我在 codepen 上找到的峰值(条形)图表的动画...:http://codepen.io/Anna_123/pen/QbQqQb
/* Pie chart based on the pen by aaronlsilber (http://codepen.io/aaronlsilber/pen/IqrkL) which is based on an article by James Litten (http://html5.litten.com/graphing-data-in-the-html5-canvas-element-part-iv-simple-pie-charts/) */
/* Peak Chart Javascript
=====================================================================*/
var peakColors = ['rgb(236, 208, 120)', 'rgba(217, 91, 67, 0.7)', 'rgba(192, 41, 66, 0.7)', 'rgba(84, 36, 55, 0.7)', 'rgba(83, 119, 122, 0.7)', 'rgba(119, 146, 174, 0.7)'];
function drawPeakChart( canvasId ) {
var i, start, peakPoint,
canvas = document.getElementById( canvasId ),
peakData = canvas.dataset.values.split(',').map( function(x){ return parseInt( x, 10 )}),
ctx = canvas.getContext( '2d' ),
max = Math.max.apply( Math, peakData ),
plotBase = canvas.width / peakData.length,
overlap = plotBase * .4;
plotBase += canvas.width * .05;
ctx.clearRect( 0, 0, canvas.width, canvas.height );
for( i = 0; i < peakData.length; i++) {
start = i === 0 ? 0 : i * plotBase - i * overlap;
peakPoint = canvas.height - Math.round( canvas.height * ( peakData[i] / max ) );
ctx.fillStyle = peakColors[i];
ctx.beginPath();
ctx.moveTo( start, canvas.height );
ctx.lineTo( start + plotBase * .5, peakPoint );
ctx.lineTo( start + plotBase, canvas.height );
ctx.lineTo( start, canvas.height );
ctx.fill();
}
}
drawPeakChart('canPeak');
body {
font: normal normal 400 1rem/1.5 "Segoe UI", "Helvetica Neue", "DejaVu Sans", Helvetica, Arial, sans-serif;
}
aside {
float: left;
margin-right: 100px;
}
.chart {
margin-bottom:0;
margin-top:0;
}
.vert > canvas, .vert > ol {
display:inline-block
}
.horiz > li {
display: inline;
padding-right: 20px;
}
.legend {
vertical-align:top;
padding-left:15px;
list-style: none;
}
.key {
position:relative;
}
.key:before {
content:"";
position:absolute;
top:35%;
left:-15px;
width:10px;
height:10px;
}
.one:before{background:rgb(236, 208, 120)}
.two:before{background:rgba(217, 91, 67, 0.7)}
.three:before{background:rgba(192, 41, 66, 0.7)}
.four:before{background:rgba(84, 36, 55, 0.7)}
.five:before{background:rgba(83, 119, 122, 0.7)}
.six:before{background:rgba(119, 146, 174, 0.7)}
<aside class="chart">
<canvas id="canPeak" width="300" height="200" data-values='40, 30, 20, 60, 10, 50'>
This browser does not support HTML5 Canvas.
</canvas>
<ol class="legend horiz">
<li class="key one">One</li>
<li class="key two">Two</li>
<li class="key three">Three</li>
<li class="key four">Four</li>
<li class="key five">Five</li>
<li class="key six">Six</li>
</ol>
</aside>
我想创建与以下示例相同的图形动画:http://codepen.io/boars/pen/bnAfC ,但经过相当多的尝试和错误,我没有成功让它工作......有人可以帮我从这里出去吗?谢谢 ! :-)
最佳答案
只需在绘制三 Angular 条的部分周围添加一个动画循环,就像这样
var animationSteps = 60;
var animationStepCounter = 0;
var animation = setInterval(function () {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (i = 0; i < peakData.length; i++) {
start = i === 0 ? 0 : i * plotBase - i * overlap;
peakPoint = canvas.height - Math.round(canvas.height * (peakData[i] / max) * animationStepCounter / animationSteps);
ctx.fillStyle = peakColors[i];
ctx.beginPath();
ctx.moveTo(start, canvas.height);
ctx.lineTo(start + plotBase * .5, peakPoint);
ctx.lineTo(start + plotBase, canvas.height);
ctx.lineTo(start, canvas.height);
ctx.fill();
}
if (animationStepCounter === animationSteps)
clearInterval(animation);
else
animationStepCounter++;
}, 10);
它所做的就是绘制条形图 60 次(两次重绘之间等待 10 毫秒),每次都增加条形图的高度,直到达到实际高度。
如果您希望动画进行得更快(减少其中之一或两者)/更平滑等,您可以更改 60 或 10 毫秒。
CodePen - http://codepen.io/anon/pen/MwQOVG
关于javascript - 如何为这个峰值图表制作动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31179422/
我尝试获取processID的峰值(win7音频混音器中绿色条的电平),例如5640-Spotify。 在互联网上搜索了一个好的图书馆。我找到了CSCore。 现在我有这个: class Progra
这里描述并回答了问题:https://groups.google.com/forum/#!topic/redis-db/egyA1xvhGfo 很遗憾,我没有完全理解答案。 我担心的是,如果 Redi
我有一些音频数据(浮点数数组),我用它来绘制一个简单的 波形。 绘制时,波形不会在边缘达到最大值。 没问题 - 数据只需要标准化。我迭代一次以找到最大值,然后再次迭代将每个除以最大值。再次绘制,一切看
将数组划分为最大数目的相同大小的块,每个块应包含一个索引P,以使A [P-1] A [P + 1]。 我的解决方案:golang solution 但是部分性能测试无故失败,有人可以提出一些建议吗?
我们有一个专用的数据库服务器,在 linux debian 上运行 PostgreSQL 8.3。定期查询数据库以获取大量数据,同时更新/插入也经常发生。数据库会周期性地在短时间内(例如 10 秒)不
我正在使用此 python 代码的稍微修改版本来进行频率分析: FFT wrong value? 假设我在时域中有一组正弦波,它们的频率非常接近,同时共享相同的振幅。这是它们在频域中的样子,对 102
我正在尝试找到一种方法使现有(专有)Linux 进程消耗大量 CPU 或使其过于繁忙以致于停止响应其他进程但不重新生成。 目前我所拥有的只是它在用户空间中的 pid。也许对进程的某种超快速 ping
我们在应用程序中使用 Redis 处理一些数据,这非常棒。不过,我注意到 redis-server 进程偶尔会出现 cpu 和内存峰值。 这是 Giraffe dashboard来 self 们的生产
我有一个 SwiftUI 项目和一个绑定(bind)到 EnvironmentObject 的 View 。该对象包含一个@Published 属性。 import Foundation class
我们目前使用的 VMOptions 如下所示,用于我们使用 spring webflux 设计的微服务之一。我们目前为每个 pod 预留了 4 个 CPU 和 5 GB 内存。 -Xms4096m -
我们目前使用的 VMOptions 如下所示,用于我们使用 spring webflux 设计的微服务之一。我们目前为每个 pod 预留了 4 个 CPU 和 5 GB 内存。 -Xms4096m -
我正在拼命寻找由于 CPU 峰值(18-19 个核心,100% 负载)导致的 Eclipse 卡住瞬间(最多 2-3 秒)的问题。在峰值期间什么都不起作用,整个 eclipse 只是没有反应。自从我修
我的工作涉及振动,我试图从 FFT 幅度中获取以下信息: 峰值到峰值 峰值 RMS 我正在对一个简单的正弦波函数执行 FFT,考虑汉宁窗。请注意,正弦波函数的“全振幅”为 5,运行 FFT 下面的代码
我们有一个位于负载平衡器后面的服务器池。这个池中的机器平均每 6 秒进行一次垃圾收集。垃圾收集需要将近半秒的时间。我们还看到在垃圾收集期间出现 CPU 峰值。 客户端计算机在一天内连接到服务器的平均时
有人知道为什么我们的 Amazon RDS 数据库的 CPU 使用率每小时会出现峰值吗?我们没有每小时运行任何 cron,因此它似乎是一些内部 RDS 的东西,因为它恰好是每小时运行一次。 RDS 是
我试图发现为什么 mysqld 有时会使 cpu 饱和并停止。 我怀疑这与更新索引或其他此类维护有关。我想证明这个假设并寻找避免它的选项。 情况是这样的。我有几十张 table ,但根据事件,似乎至少
已解决 在我们的例子中,问题是对于 SuggestRequestHandler (requestHandler name="/suggest") 现在已经设置了 facelimit:10此外,应用程序
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在尝试使用 ALSA 和 C 检索当前音频峰值。我希望将该值作为 0.0 到 1.0(或者可能是 0 到 100)之间的标量。在 Windows 上我使用 IAudioMeterInformati
我是一名优秀的程序员,十分优秀!