需要在reactjs中画图表:
画布:不是从左到右的水平的,而是从上到下垂直的
y轴:有2个折线的
是从上到下垂直显示的
现在能想到的可能性有:
1.从图表的js库本身看看能不能直接支持
2.看看从画布,后者container的div(或其他元素)逆时针旋转90度,也可以
先从图表库本身去找找
考虑到js图表库的话,暂时尽量还是用之前用过的,功能算强大的echarts
echarts 折线图 垂直显示
折线图怎样画折线上点到X轴的竖线以及怎样有一点偏移? · Issue #3419 · ecomfe/echarts
不等距折线图垂直辅助线不能显示 · Issue #1487 · ecomfe/echarts
ECharts折线图多个折线每次只显示一条 – 一点知识 – SegmentFault 思否
javascript – echarts 折线图: x轴某个点上有多个值,怎样竖着排列 – SegmentFault 思否
好像没看到有这方面的功能
先去:
html 逆时针 旋转90度
在HTML中,怎样将一个div块进行顺时针(逆时针)旋转90°CSS实现法 – 为程序员服务
调试了后,用:
<code>.activity_chart { transform: rotate(90deg); background-color: greenyellow; // padding-left: 20vw; margin-top: 40vw; } </code>
效果:
代码:
<code>.activity_chart { transform: rotate(90deg); background-color: greenyellow; // padding-left: 20vw; // margin-top: 40vw; margin-top: 75vw; height: 30vw; width: 90vh; overflow: scroll; } </code>
效果:
此处,暂时算是可以旋转90度显示了。
具体内容布局,待后续有了图表的内容,再去细调。
然后去把echarts引进来
发现之前已经引入了echarts了
(尤其是参考了:android的实现
之后)
那就是搞清楚,如何先画一个x坐标,2个y轴的值了
echarts y轴2个值
如何用echarts实现双坐标折线图? · Issue #323 · apache/incubator-echarts
-》
http://echarts.baidu.com/doc/example/mix1.html
是双Y轴,不是y轴2个值,2个折线
echarts实现双y轴,并且实现制定数据使用y轴 – CSDN博客
好像就是双y轴
echarts y轴双坐标轴,其中一个包含负刻度时的,坐标轴刻度显示问题 · Issue #3846 · apache/incubator-echarts
然后参考:
http://echarts.baidu.com/doc/example/mix1.html
用配置:
<code>function getOtion(data) { console.log(`getOtion data=${data}`); let yAxisAverageActivityDataList = []; let yAxisCurrentActivityDataList = []; let xAxisDatetimeDataList = []; for (let eachDict of data) { yAxisAverageActivityDataList.push(eachDict.Int_AvgSteps); yAxisCurrentActivityDataList.push(eachDict.Int_Steps); xAxisDatetimeDataList.push(eachDict.Dtm_Date); } console.log(`yAxisAverageActivityDataList=${yAxisAverageActivityDataList}`); console.log(`yAxisCurrentActivityDataList=${yAxisCurrentActivityDataList}`); console.log(`xAxisDatetimeDataList=${xAxisDatetimeDataList}`); return { tooltip : { trigger: 'axis' }, legend: { data: ['平均活动量','当前活动量'], top: "bottom" }, xAxis : [ { type : 'category', data : xAxisDatetimeDataList } ], yAxis : [ { type : 'value', name : '平均', axisLabel : { formatter: '{value}' } }, { type : 'value', name : '当前', axisLabel : { formatter: '{value}' } } ], series: [ { name: "平均活动量", type: "line", yAxisIndex: 0, data: yAxisAverageActivityDataList }, { name: "当前活动量", type: "line", yAxisIndex: 1, data: yAxisCurrentActivityDataList } ] }; } </code>
效果:
点击后,显示:
现在接着去优化:
底部显示的时间,变成 月日时分
y轴的点都显示值
最后用:
<code> const cowActivityStyle = { // width: '90vw', // height: '150vh', // margin: '75vw auto' // width: '375px', // height: '600px', // margin: 'auto', // width: '1700px', // HH:mm width: '900px', // HH // height: '300px', // height: '375px' height: '100vw' // margin: '0' // overflow: "scroll" }; function getOtion(data, cowFarm, cowCode) { console.log(`getOtion data=${data}`); let yAxisAverageActivityDataList = []; let yAxisCurrentActivityDataList = []; let xAxisDatetimeDataList = []; for (let eachDict of data) { yAxisAverageActivityDataList.push(eachDict.Int_AvgSteps); yAxisCurrentActivityDataList.push(eachDict.Int_Steps); let dtmDatetime = timestampToDate(eachDict.Dtm_Date); // console.log(`dtmDatetime=${dtmDatetime}`); // let formatedDatetime = datetimeToStr(dtmDatetime, "", "HH:mm"); let formatedDatetime = datetimeToStr(dtmDatetime, "", "HH"); // console.log(`formatedDatetime=${formatedDatetime}`); xAxisDatetimeDataList.push(formatedDatetime); } console.log(`yAxisAverageActivityDataList=${yAxisAverageActivityDataList}`); console.log(`yAxisCurrentActivityDataList=${yAxisCurrentActivityDataList}`); console.log(`xAxisDatetimeDataList=${xAxisDatetimeDataList}`); return { title: { show: true, text: `牛场:${cowFarm} 牛号:${cowCode} 活动量`, left: "center", top: 5, textStyle: { fontSize: 14, align: "center", verticalAlign: "bottom" } }, tooltip : { trigger: 'axis' }, legend: { data: ['平均活动量','当前活动量'], top: "bottom", left: "center" }, grid: { show: false, left: "4%", right: "10%", top: "40", bottom: "50" }, xAxis : [ { type : 'category', data : xAxisDatetimeDataList } ], yAxis : [ { type : 'value', name : '平均', axisLabel : { formatter: '{value}' } }, { type : 'value', name : '当前', axisLabel : { formatter: '{value}' } } ], series: [ { name: "平均活动量", type: "line", label: { normal: { show: true } }, yAxisIndex: 0, data: yAxisAverageActivityDataList }, { name: "当前活动量", type: "line", yAxisIndex: 1, label: { normal: { show: true } }, data: yAxisCurrentActivityDataList } ] }; } <div class={style.activity_chart}> {/* <div class={style.activity_title}> <p>牛场:&nbsp;xxxx&nbsp;&nbsp;牛号:&nbsp;12345</p> </div> */} <ReactEcharts style={cowActivityStyle} option={getOtion(this.state.respCowActivityData, "宁夏平吉堡第二奶牛养殖场", this.state.cow_code)} /> </div> </code>
以及css:
<code>.activity_chart { transform: rotate(90deg); } </code>
具体显示效果是:
转载请注明:在路上 » 【已解决】js中如何实现从上到下垂直显示的图表