- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的图表按照我想要的方式工作——除了一部分……X 轴。虽然它显示了正确的值,但我只需要将其格式化为“M/D/Y,时间”格式并渲染每一个值。现在它每 6 小时只渲染一次滴答声。我有所有数据(在控制台中是“DTIME #########”)。
我只需要正确格式化 x 轴日期并实际呈现控制台中的所有日期。
谢谢!
这是文件的所有代码:
class Linechart extends React.Component {
constructor(props) {
super(props);
this.draw_chart = this.draw_chart.bind(this);
this.state = {}
}
componentDidMount() {
setTimeout(() => {
// EARTHQUAKES FROM FETCH FROM FEED.JSX
var parsed_quakes = (store.getState()).quake_data[0];
// MAGNITUDE 3 QUAKES
const mag_three = parsed_quakes.filter(quake =>
quake.properties.mag >= 3 && quake.properties.mag < 4
);
// DYNAMIC FUNCTION TO PARSE QUAKES
const mag_parse = (quakemag) => {
// NEW OBJECT
var mag_three_obj = new Object();
const quake_arr = []; // STORE QUAKES OBJECTS
var line_points = [];
for (var i = 0; i < quakemag.length; i++) {
// GET DATE AND TIME OF EACH MAG 3 EARTHQUAKE
const time_stamp = new Date(quakemag[i].properties.time);
const string_time = time_stamp.toString();
const mag_three_time = new Date(string_time.split(' ').slice(1, 5)).toLocaleString();
// DAY/TIME
const quake_three_time = mag_three_time.split(' ');
// MAGNITUDE
const quake_three_mag = quakemag[i].properties.mag;
mag_three_obj = {
emag: quake_three_mag,
etime: quake_three_time
}
var date_format = new Date(mag_three_time);
var milli_format = date_format.getTime();
line_points.push([quake_three_mag, milli_format]);
quake_arr.push(mag_three_obj);
} // END LOOP
// console.log('QUAKE ARR ', quake_arr);
// console.log('LINE POINTS ', line_points);
// DISPATCH TO USE IN draw_chart FUNCTION
store.dispatch({ type: 'PARSED-QUAKES', payload: quake_arr });
return quake_arr;
} // END MAG PARSE FUNCTION
// PARSED MAGNITUDE THREE INVOCATION
const parsed_mag_three = mag_parse(mag_three);
this.draw_chart(parsed_mag_three);
}, 1000);
}
// LINE CHART FUNCTION
draw_chart(data) {
// DECLARE MARGIN AND DIMENSIONS
var margin = {
top: 20,
right: 20,
bottom: 80,
left: 80
}
var width = 1100 - margin.left - margin.right;
var height = 500 - margin.top - margin.bottom;
// APPEND THE SVG OJECT TO THE BODY OF THE PAGE
// APPEND A GROUP ELEMENT AND MOVE IT TO TOP LEFT
var svg = d3.select('.line-graph').append('svg')
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
// GET PARSED EARTHQUAKES FROM REDUX STORE
let parsed_quakes = (store.getState()).quake_data[0];
parsed_quakes.forEach((data) => {
data.etime = data.etime.join(' ');
data.emag = data.emag;
});
// DEFINE THE LINE
var value_line = d3.line()
.x(function(d) {return x(d.etime);})
.y(function(d) {return y(d.emag);})
// SET THE RANGES
var x = d3.scaleTime().range([0, width]);
var y = d3.scaleLinear().range([height, 3]);
// CONVERT DATES BACK TO MILLISECONDS
data.forEach(function(el) {
var date_format = new Date(el.etime);
var millis_format = date_format.getTime();
// CONVERT THE STRING DATE/TIME FORMAT TO MILLISECONDS
el.etime = millis_format;
})
console.log('DATA ARRAY 1ST EL ', data[0]);
console.log('DATA ARRAY LAST EL ', data[data.length - 1]);
// SET THE DOMAINS
// CREATE VALUES FOR THE X AXIS FROM MIN TO MAX
x.domain(
d3.extent(data, function(d) {
console.log('DTIME ', d.etime);
d.etime = new Date(d.etime);
return d.etime;
})
);
// CREATE VALUES FOR THE Y AXIS FROM MIN TO MAX
y.domain([3, d3.max(data, function(d) { return d.emag })]);
svg.append('path')
.data([data])
.attr('class', 'line')
.attr('d', value_line)
// APPEND X AXIS
svg.append('g')
.call(d3.axisBottom(x))
.attr('transform', 'translate(0,' + height + ')')
.append('text')
.attr('fill', '#E1ECA5')
.attr('x', 6)
.attr('dx', '1.5em')
.attr('dy', '2.5em')
.attr('text-anchor', 'end')
.attr("font-size", 16)
.text('Time');
// APPEND THE Y AXIS
svg.append('g')
.call(d3.axisLeft(y))
.append("text")
.attr("fill", "#E1ECA5")
.attr("transform", "rotate(-90)")
.attr("y", 0)
.attr("dy", "-2.5em")
.attr("text-anchor", "end")
.attr("font-size", 16)
.text("Magnitude");
}
render() {
return (
<div className='line-graph'>
</div>
)
}}
最佳答案
创建轴时可以使用两种方法:
这可能看起来像:
var axis = d3.axisBottom(x)
.ticks(d3.timeDay.every(1)) // a tick for every day.
.tickFormat(d3.timeFormat("%d/%m/%y")); // date in format: 31/01/19
这给你类似的东西(使用不同的日期格式):
var parseTime = d3.timeParse("%B %d, %Y");
var min = parseTime("January 1, 2019");
var max = parseTime("January 31, 2019");
var mid = parseTime("January 16, 2019");
var x = d3.scaleTime()
.domain([min,max])
.range([20,480])
var axis = d3.axisBottom(x)
.ticks(d3.timeDay.every(1))
.tickFormat(d3.timeFormat("%d-%B"));
var g = d3.select("svg")
.append("g")
.attr("transform","translate(0,50)")
.call(axis);
g.selectAll("text")
.attr("transform","translate(10,0)rotate(60)")
.style("text-anchor","start");
// Animate a demonstration:
var i = 0;
function cycle() {
x.domain([[min,mid,min,min][i%4],[mid,max][i%2]]);
g.transition()
.duration(2000)
.call(axis)
.on("end", function() {
if(i++ < 40) cycle();
})
}
cycle();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<svg width="500" height="300"></svg>
有关格式规范的完整列表,请参阅文档 here .
关于javascript - 我的 X 轴没有呈现我想要的所有刻度 - D3 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55546009/
如何使用 plot() 在 XY 图中绘制第二条线,以不同的比例(如本例(紫色线))? 第一行(红色)我的 R 代码是这样的: p <- sqlQuery(ch,"SELECT wl,param1 F
我正在寻找一种将折线图步骤设置为仅完整数字步骤的方法,例如 1,2,3,4,5..... 目前它看起来像这样: 这些是我的选择。我搜索了很多但找不到解决方案。 let options = {
我的问题是如何将 Y 轴刻度的间隔从 0.2 更改为 0.1?我已经尝试了一切,但我很困!帖子底部堆叠条形图的图片 dpi=600 #pixels per square inch A <- c(
有没有办法根据当前数据集在 D3 轴上动态设置 ticks。我遇到的问题是我的时间范围(x 轴)可能变化很大。对于一些数据集来说,它是几年的值(value),对于其他数据集来说是几个月,在某些情况下只
我已经使用默认参数创建了一个 dojo 蜘蛛图。我需要隐藏轴标签(刻度上的数据值,而不是轴标题)。 我已经尝试过'ticks: false',但是它不适用于蜘蛛图。 require(["dojo/_b
有没有一种简单的方法可以在绘图 Axis 上获得自定义缩放比例? 例如,semilogy 函数提供 {x, log10(y)} 缩放比例,这样就可以自动放大/缩小并自动调整刻度和标签。我想对 {x,
如何修改图形和图表的 y Axis 刻度?我想要这样的东西:my_figure.y_range.end = my_figure.y_range.end * 1.3 所以我想要更高一点的y轴。谢谢! 最
我正在尝试使用 recharts 添加图表一些货币的最新汇率。数据显示正确,但图表始终从 0 开始并略高于最大值。 图表是正确的,但它不需要从 0 开始,因为这样做,它几乎是一条线。 这是图表的图片:
我有一个 SWT Scale 小部件,我需要在刻度上的刻度上添加标签。 有没有办法做到这一点?也许在 slider 小部件上? 谢谢 最佳答案 这可能不是您所要求的,但您可以在 Scale 小部件旁边
这是一个从 .xlsx 文件中读取数据并利用 Plotly 库绘制气泡图的程序。这是 .xlsx 文件的原始数据: 1991 1992 1993 1994 1995
我这里有一个代码笔 - https://codepen.io/anon/pen/yvgJKB 我有一个简单的堆积条形图。 我想将其制作成一个组件,因此我需要传入值以使其可重用 x 缩放函数返回d.da
让我们看一个基本的演示折线图: jsfiddle $(function () { $('#container').highcharts({ //all the code there 我想强制
是否可以在 t-sql 中获得像 DateTime.Ticks 这样的 C# 内容? 感谢帮助 最佳答案 您不太可能从 SQL 中获得与 DateTime.Ticks 相同的精度,因为 SQL 不能以
我正在使用 Bokeh 生成散点图,每个 X 值具有不同的 Y 值。当 Bokeh 生成绘图时,它会根据绘制的值的数量自动填充 x 轴间距。我希望 x 轴上的所有值均匀分布,无论单个数据点的数量如何。
我使用下面的代码使用谷歌图表生成折线图 google.charts.load('current', {packages: ['corechart', 'line']});
我正在尝试在 d3 中构建堆积条形图。 这是我的 jsfiddle: http://jsfiddle.net/maneesha/gwjkgruk/4/ 我正在尝试修复它,使 y 轴从零开始。 我认为这
我有一个 d3 时间刻度图表。目前,轴刻度为每个数据对象呈现一个日期。例如,数据的范围可以是 1 天的数据、1 个月内 2 周的数据、5 个月的数据甚至更多。 理想情况下,我们希望显示带有周数的刻度,
当使用“Cassic”折线图时,我可以为 hAxis 分配刻度,还有这样的格式和标题: var options = { hAxis: { format:'h a', title
我的累积折线图没有正确构建 yScale。 给定要构建图表的数据: var data = [{ key: "Page view", values: [ ["2013-07-01 00:
在 y 轴上使用两个具有正常整数值的 DateAxisSeries(x 轴)我的 jqPlot 将 y 刻度呈现两次。 像这样: 2| 2| 1| 1| 0|_____________________
我是一名优秀的程序员,十分优秀!