English 简体中文
$ npm install react-native-echarts-pro --save
It is super easy to use Apache ECharts in react-native
. Have a look at our Get Started Documentation and onboard your app within minutes. Our detailed documentation is available as well.
A React-Native charts based on Apache ECharts, support various charts and map.
Home Page: https://supervons.github.io/react-native-echarts-pro-docs/
License: MIT License
English 简体中文
$ npm install react-native-echarts-pro --save
It is super easy to use Apache ECharts in react-native
. Have a look at our Get Started Documentation and onboard your app within minutes. Our detailed documentation is available as well.
暂时只有安卓设备
extension={[
// 注入js 监听点击 取消默认高亮
` setTimeout(function () {
myChart.on('click', (params)=>{
if(params.dataIndex!==0){
myChart.dispatchAction({
type: 'downplay',
dataIndex: 0
})
}
});
}, 1000) `,
]}
我尝试过打包后alert(typeof myChart)输出为undefined,也试过修改源码把const myChart改为 window.myChart,
然后alert(typeof window.myChart)也还是undefined
最后用onPress结合dispatchAction实现了功能
但还是希望能够有办法解决这个问题,以防以后有需求
`
import React, {useEffect, useRef, useState} from 'react';
import {
View,
StyleSheet
} from 'react-native';
import ECharts from "react-native-echarts-pro";
import * as echarts from 'echarts'
function GaugeChart(props) { //构造函数
const [option, setOption] = useState({})
const chartRef = useRef(null)
useEffect(() => {
const defOp = {
graphic: {
elements: [{
type: "image",
style: {
image: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201509%2F27%2F20150927124837_KeRUL.jpeg&refer=http%3A%2F%2Fb-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1651219937&t=cd810aaa55f2b18881793b0d577aac9d",//你的图片地址
width: 100,
height: 100,
},
left: "center",
top: "center",
}],
},
series: [
{
type: 'pie',
name: '',
radius: ['94%', '100%'],
data: [
{ value: 0, name: '' },
],
itemStyle: {
borderWidth: 0,
color: '#BFDCFF'
},
label: {
show: false
},
emphasis: {
disabled: true
}
},
{
name: 'Pressure',
type: 'gauge',
startAngle: 90,
endAngle: -270,
radius: "94%",
axisTick: {
show: false
},
pointer: {
show: false
},
splitLine: {
show: false
},
anchor: {
show: false
},
axisLabel: {
show: false,
},
label: {
show: false
},
title: {
show: false
},
progress: {
show: true,
width: 3,
itemStyle: {
borderWidth: 0,
color: '#0072FF'
}
},
detail: {
show: false
},
axisLine: {
show: false,
},
// detail: {
// valueAnimation: true,
// formatter: '{value}'
// },
data: [
{
value: 50,
}
]
}
]
}
setOption(defOp)
}, [])
return (
<ECharts
ref={chartRef}
option={option}
height={85}
/>
)
}
const styles = StyleSheet.create({});
export default GaugeChart
`
同一个页面使用多个图表时只显示一个,不知道是不是只有我遇到这种问题,咋处理
"react": "17.0.1",
"react-native": "0.64.2",
"react-native-echarts-pro": "^1.7.3",
// 比如这两个组件各有一个图表,在同一页面时只显示下面的那个
<StepCountCard
width="132"
height={212}
margin="0 12 0 0"
border="1 solid controlBorder"
borderRadius="14"
/>
<HeartRateCard
width="132"
height={212}
margin="0 12 0 0"
border="1 solid controlBorder"
borderRadius="14"
/>
// StepCountCard的图表部分代码
import RNEChartsPro from 'react-native-echarts-pro';
const chartOption = {
... // 图表的配置
};
<FlexColContainer
{...layoutProps}
flexGrow="1"
>
<RNEChartsPro
height={this.props.height}
option={chartOption}
webViewSettings={{
scrollEnabled: true,
style: {
backgroundColor: 'transparent',
},
}}
/>
</FlexColContainer>
图例交互事件:
1) legendselectchanged : 切换图例选中状态后的事件 (注:图例组件用户切换图例开关会触发该事件,不管你有没有选择,点击了就触发)
2)legendselected:例组件用legendSelect 图例选中后的事件,即点击显示该图例时,触发就生效。
3)legendunselected: legendUnSelect 图例取消选中后的事件。
4)datazoom:数据区域缩放后的事件。缩放视觉映射组件。
5)datarangeselected:selectDataRange 视觉映射组件中,range 值改变后触发的事件。
6)timelinechanged:timelineChange 时间轴中的时间点改变后的事件。
7)timelineplaychanged:timelinePlayChange 时间轴中播放状态的切换事件。
8)restore: restore 重置 option 事件。
9)dataviewchanged:工具栏中数据视图的修改事件。
10)magictypechanged:工具栏中动态类型切换的切换事件。
**11)geoselectchanged:geo 中地图区域切换选中状态的事件(用户点击选中会触发该事件。)。
12)geoselected:geo 中地图区域选中后的事件(使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 geoselectchanged))。
13)geounselected:geo 中地图区域取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 geoselectchanged)。**
14)pieselectchanged:series-pie 中饼图扇形切换选中状态的事件,用户点击选中会触发该事件。
15)pieselected:series-pie 中饼图扇形选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 pieselectchanged)。
16)pieunselected:series-pie 中饼图扇形取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 pieselectchanged)。
17)mapselectchanged: series-map 中地图区域切换选中状态的事件,用户点击选中会触发该事件。
18)mapselected:series-map 中地图区域选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 mapselectchanged)。
19)mapunselected:series-map 中地图区域取消选中后的事件,使用dispatchAction可触发此事件,用户点击不会触发此事件(用户点击事件请使用 mapselectchanged)。
20)axisareaselected:平行坐标轴 (Parallel) 范围选取事件,
当进行坐标轴范围选取时,可以用如下方式获取当前高亮的线所对应的 data indices (即 series 的 data 中的序号列表)。
多图表渲染延迟,加载很慢,图表切换有时加载不出来,请问是什么原因,有什么可以优化的地方
能支持下ts吗?
iOS 偶现这个问题 搜了下应该是下面这个issue
react-native-webview/react-native-webview#2298
能否加下这个代码
<WebView source={{ uri: 'https://reactnative.dev' }} onContentProcessDidTerminate={(syntheticEvent) => { const { nativeEvent } = syntheticEvent; console.warn('Content process terminated, reloading', nativeEvent); this.refs.webview.reload(); }} />
我想请问一下,类似于dispatchAction这样的内置函数能调用得了嘛?
I gave option like below(callback function), and chart doesn't show only at android.
(I tried template variable {value}, and it works.)
...
yAxis: {
axisLabel: {
formatter: function (value) {
'show source';
if (value >= 1000000) {
value = value / 1000000 + 'M';
} else if (value >= 1000) {
value = value / 1000 + 'k';
}
return value;
},
},
...
"react-native-echarts-pro": "1.8.3",
"react-native": "0.68",
您好,我想使用1.7.4新添加的功能,但是yarn更新的时候显示包的版本只有到1.7.3,npm 查看包所有版本也只到1.7.3,请问这个该如何处理?
我需要使用例如echarts.util.curry这样的功能,请问在哪里引入echarts对象呢,万分感激!谢谢!
`getChartOption(yAxisData) {
let xAxisData = [];
for (let i = 0; i < 24; i++) {
xAxisData.push(i+"");
}
let xAxis = {
type: 'category',
nameTextStyle: {
color: '#999999',
fontWeight: '400',
fontSize: 9,
lineHeight: 15,
},
axisLabel: {
showMaxLabel: true,
interval: 3,
},
axisPointer: {
show: true,
type: 'line',
lineStyle: {
color: '#BCBCBC',
width: 1,
type: 'solid',
},
label: {
show: false,
},
},
data: xAxisData,
};
let yAxis = {
type: 'value',
position: 'right',
};
let tooltip = {
trigger: 'axis',
position: 'right',
backgroundColor: '#4D4D4D',
borderWidth: 0,
formatter: function(params) {
'show source';
return "<span style='color:#ffffff80'>" + params[0].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[0].value + '</span><br/>'
+ "<span style='color:#ffffff80'>" + params[1].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[1].value + '</span><br/>'
+ "<span style='color:#ffffff80'>" + params[2].seriesName + "</span><span style='color:#ffffff;margin-left:7px;'>" + params[2].value + '</span>';
},
};
return {
xAxis,
yAxis,
tooltip,
series: yAxisData,
};
}
render() {
return <RNEChartsPro
option={this.getChartOption(this.props.yAxisData)}
height={280}
webViewSettings={{
scrollEnabled: false,
}}
/>;
}`
Hi, thank you for the amazing library. When I try your example I do not see tooltips rendering. If I take out the formatter function, the tooltips work fine.
react-native-echarts-pro【1.8.0】
react-native version【0.65.1】
react-native-webview 【11.17.2】
Platform【android】
I'm trying to understand if formatter functions are supported at all since you seem to be stripping them out in the toString function.
react-native-echarts-pro【1.7.4】
react-native version【0.63.4】
react-native-webview 【11.0.2】
Platform【android】
模拟器上可以正常显示,高版本的真机也可以显示
hi first i really appreciate for module you build in.
I use your module but I can't resolve the Android build issue, so I write this page.
at first, when I build android, Chart Option that use function, then result module doesn't work.
and, zooming action doesn't work and often contents of chart doesn't visible.
how can I solve this situation?
if you already solve my situation, please answer me the solution
thank you.
大家好,我的图表无法正常在android设备展示,但是在iOS正常;Hello, my chart doesn't work on Android devices, but it works on iOS;
import React from "react";
import { View } from "react-native";
import RNEChartsPro from "react-native-echarts-pro";
export default function ChartsComponent() {
const pieOption = {
tooltip: {
trigger: "axis",
},
legend: {
type: "scroll", // 设置图例翻页
orient: "horizontal", // 图例横
data: ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"],
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
boundaryGap: false,
data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
},
yAxis: {
type: "value",
},
series: [
{
name: "邮件营销",
type: "line",
stack: "总量",
data: [120, 132, 101, 134, 90, 230, 210],
}
],
};
return (
<View style={{ height: 300, paddingTop: 25 }}>
<RNEChartsPro
onPress={res => alert(JSON.stringify(res))}
legendSelectChanged={res => alert(res)}
height={250}
option={pieOption}
/>
</View>
);
}
希望能够帮助到大家!
Hope to be able to help everyone!
react-native-echarts-pro【1.7.3】
react-native version【0.59.5】
react-native-webview 【6.11.1】
Platform【android】
System【10,11】
Demo:
/**
import React from "react";
import { View } from "react-native";
import RNEChartsPro from "react-native-echarts-pro";
return (
<View style={{ height: 300, paddingTop: 25 }}>
<RNEChartsPro
onPress={res => {
console.log(res)
}}
legendSelectChanged={res => console.log(res)}
width={this.state.chartsWidth}
height={this.state.chartsHeight}
option={pieOptionColumn(xData, yData, this.state.moneyMax)}
/>
);
}
因为有定制的需求(https://echarts.apache.org/zh/builder.html), 大多数图表还是用不上的。
我直接把定制后下载的代码或者直接使用完整的代码替换项目中的 echarts.min.js 是没有用的,会报错。
我的app支持旋转,我在 onLayout 里面获取到新的页面宽高,用 setState 刷新页面,图表的宽高没有发生变化
另外请问支持 type 为 custom 的类型吗,我需要自定义布局,下面这段是官网上的例子
var option = {
...,
series: [{
type: 'custom',
renderItem: function (params, api) {
var categoryIndex = api.value(0);
var start = api.coord([api.value(1), categoryIndex]);
var end = api.coord([api.value(2), categoryIndex]);
var height = api.size([0, 1])[1] * 0.6;
var rectShape = echarts.graphic.clipRectByRect({
x: start[0],
y: start[1] - height / 2,
width: end[0] - start[0],
height: height
}, {
x: params.coordSys.x,
y: params.coordSys.y,
width: params.coordSys.width,
height: params.coordSys.height
});
return rectShape && {
type: 'rect',
shape: rectShape,
style: api.style()
};
},
data: data
}]
}
const testOption = {
tooltip: {
backgroundColor: 'rgba(255,255,255,0.8)',
borderColor: '#668BEE',
borderWidth: 1,
padding: [5, 10],
textStyle: {
color: '#24283C',
fontSize: 12,
},
trigger: 'item',
formatter: function (a) { // Changed here!!!
return 'hihi';
},
},
series: [
{
name: 'Source',
type: 'pie',
legendHoverLink: true,
hoverAnimation: true,
avoidLabelOverlap: true,
startAngle: 180,
radius: '55%',
center: ['50%', '35%'],
data: [
{value: 105.2, name: 'android'},
{value: 310, name: 'iOS'},
{value: 234, name: 'web'},
],
label: {
normal: {
show: true,
textStyle: {
fontSize: 12,
color: '#23273C',
},
},
},
emphasis: {
lable: {
show: true,
fontSize: 12,
color: '#668BEE',
},
itemStyle: {
show: true,
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)',
},
},
},
],
};
I set custom formatter like code, and this works for a while and a few seconds later, it shows default tooltip formatter. I tried setNewOption
, and same result.
页面上有多个图表, 如果这个页面有其它点击push页面
点击进其它页面时,整个APP闪退
ios中配置formatterVariable在tooltip中使用本地运行是没问题的,但是打完包之后会导致图表不显示
问题描述:安卓一个页面使用两个图表时,关闭页面时崩溃,无法定位问题在哪。
我试过了只用一个图表或者不使用图表时,都不会有问题,当我使用两个的时候,在关闭页面时就会崩溃,iOS没有问题。
logcat崩溃日志
react-native-echarts-pro 1.7.0;
react-native 0.61.5;
react-native-webview 9.1.0;
平台;
系统版本 Android 11;
logcat崩溃日志:
2021-09-02 23:17:05.340 25141-25141/? A/crashpad: -----BEGIN CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.372 25141-25141/? A/crashpad: -----BEGIN CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.372 25141-25141/? A/crashpad: )iyJD'cB?sj68?'rN%:M>MCR}9aM]/ER=M>。。。。超长串乱码
2021-09-02 23:17:05.503 25141-25141/? A/crashpad: -----END CRASHPAD MINIDUMP-----
2021-09-02 23:17:05.513 24794-24821/com.sinocem.slags A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20 in tid 24821 (RenderThread), pid 24794 (m.sinocem.slags)
2021-09-02 23:17:05.596 594-594/? E/SELinux: avc: denied { find } for pid=5831 uid=10207 name=tethering scontext=u:r:vendor_systemhelper_app:s0:c512,c768 tcontext=u:object_r:tethering_service:s0 tclass=service_manager permissive=0
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Build fingerprint: 'Xiaomi/venus/venus:11/RKQ1.200928.002/V12.5.11.0.RKBCNXM:user/release-keys'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Revision: '0'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: ABI: 'arm64'
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Timestamp: 2021-09-02 23:17:05+0800
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: pid: 24794, tid: 24821, name: RenderThread >>> com.sinocem.slags <<<
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: uid: 10404
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: Cause: null pointer dereference
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x0 0000007330fb8140 x1 00000074329079a8 x2 0000000000000002 x3 000000739f0ef5b0
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x4 000000739ec02538 x5 000000739ec43500 x6 000000739f0ef03c x7 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x8 0000000000000000 x9 0000000000000000 x10 0000000200000004 x11 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x12 0000000000000000 x13 00000000000001cd x14 0000000000000000 x15 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x16 0000007432b16cf0 x17 00000074326de718 x18 00000073428aa000 x19 000000733b8c9000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x20 0000000000000000 x21 0000000000000000 x22 0000000000000003 x23 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x24 0000000000000000 x25 0000000000000000 x26 00000000000005c0 x27 0000000000000000
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: x28 0000000000000000 x29 000000739f0ef720
2021-09-02 23:17:05.602 25144-25144/? A/DEBUG: lr 00000074325aff78 sp 000000739f0ef580 pc 00000074325affc0 pst 0000000020001000
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: backtrace:
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #00 pc 0000000000218fc0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::GLFunctorDrawable::onDraw(SkCanvas*)+884) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #1 pc 00000000002b60fc /system/lib64/libhwui.so (SkDrawable::draw(SkCanvas*, SkMatrix const*)+88) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #2 pc 00000000005700b4 /system/lib64/libhwui.so (SkGpuDevice::drawDrawable(SkDrawable*, SkMatrix const*, SkCanvas*)+300) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #3 pc 00000000001d87dc /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+952) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #4 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #5 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #6 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #7 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #8 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #9 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #10 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #11 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #12 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #13 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #14 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #15 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #16 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #17 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #18 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #19 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #20 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #21 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #22 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #23 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #24 pc 00000000001d8830 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+1036) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #25 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #26 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #27 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #28 pc 00000000001d9098 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::onDraw(SkCanvas*)+252) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #29 pc 00000000001f5ea4 /system/lib64/libhwui.so (android::uirenderer::$_24::__invoke(void const*, SkCanvas*, SkMatrix const&)+84) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #30 pc 00000000001d8808 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::drawContent(SkCanvas*) const+996) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #31 pc 00000000001d92f4 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::RenderNodeDrawable::forceDraw(SkCanvas*) const+196) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #32 pc 000000000021e4d0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderLayersImpl(android::uirenderer::LayerUpdateQueue const&, bool)+604) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #33 pc 000000000021fbf0 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaPipeline::renderFrame(android::uirenderer::LayerUpdateQueue const&, SkRect const&, std::__1::vector<android::spandroid::uirenderer::RenderNode, std::__1::allocator<android::spandroid::uirenderer::RenderNode > > const&, bool, android::uirenderer::Rect const&, sk_sp, SkMatrix const&)+148) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #34 pc 000000000021cca8 /system/lib64/libhwui.so (android::uirenderer::skiapipeline::SkiaOpenGLPipeline::draw(android::uirenderer::renderthread::Frame const&, SkRect const&, SkRect const&, android::uirenderer::LightGeometry const&, android::uirenderer::LayerUpdateQueue*, android::uirenderer::Rect const&, bool, android::uirenderer::LightInfo const&, std::__1::vector<android::spandroid::uirenderer::RenderNode, std::__1::allocator<android::spandroid::uirenderer::RenderNode > > const&, android::uirenderer::FrameInfoVisualizer*)+416) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #35 pc 0000000000225e84 /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::draw()+1024) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #36 pc 0000000000228374 /system/lib64/libhwui.so (_ZNSt3__110__function6__funcIZN7android10uirenderer12renderthread13DrawFrameTask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+484) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #37 pc 0000000000216884 /system/lib64/libhwui.so (android::uirenderer::WorkQueue::process()+220) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #38 pc 000000000023878c /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+88) (BuildId: 8fc11257b2c09a14550919dc7f9b657c)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #39 pc 00000000000154cc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260) (BuildId: 4e69b93bf70ed592f0029dbd1097529e)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #40 pc 0000000000014d90 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) (BuildId: 4e69b93bf70ed592f0029dbd1097529e)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #41 pc 00000000000eb828 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) (BuildId: 5f57d25b37c043ed36c0e4147dcc8b3f)
2021-09-02 23:17:05.627 25144-25144/? A/DEBUG: #42 pc 000000000008ba48 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 5f57d25b37c043ed36c0e4147dcc8b3f)
2021-09-02 23:17:05.797 594-594/? E/SELinux: avc: denied { find } for pid=5831 uid=10207 name=tethering scontext=u:r:vendor_systemhelper_app:s0:c512,c768 tcontext=u:object_r:tethering_service:s0 tclass=service_manager permissive=0
2021-09-02 23:17:05.909 25144-25144/? E/crash_dump64: cannot open libmiuindbg.so: No such file or directory
2021-09-02 23:17:05.909 777-777/? E/tombstoned: Tombstone written to: /data/tombstones/tombstone_22
legendSelectChanged?(result: string);
onDataZoom?(result: string);
没有触发事件
如何使用Echarts的内置函数,如new echarts.graphic.LinearGradient
react-native-echarts-pro【1.8.2】
react-native version【0.63.4】
react-native-webview 【11.4.0】
Platform【ios】
System【14.6】
Demo:
class demo extends React.Component {
constructor(props) {
super(props);
this.state = {
tooltipData: {
"2022-03-25": "",
"2022-03-26": "",
"2022-03-27": "",
"2022-03-28": "",
"2022-03-29": "",
"2022-03-30": "a:13<br/>b:8<br/>c:5<br/>",
"2022-03-31": "a:17<br/>b:25<br/>c:25<br/>",
"2022-04-01": "a:13<br/>b:5<br/>c:5<br/>",
"2022-04-02": "z:16<br/>b:20<br/>c:20<br/>"
}
};
}
const pieOption = {
tooltip: {
trigger: "axis",
formatter: (params) => {
return (
params[0].seriesName + ":" + params[0].data +'<br />'
+ formatterVariable[params[0].name]
)
}
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
boundaryGap: false,
data: ["2022-03-27, "2022-03-28", "2022-03-29", "2022-03-30", "2022-03-31", "2022-04-01", "2022-04-02],
},
yAxis: {
type: "value",
},
series: [
{
name: "邮件营销",
type: "line",
stack: "总量",
data: [120, 132, 101, 134, 90, 230, 210],
}
],
};
render() {
return (
<View style={{ height: 300, paddingTop: 25 }}>
<RNEChartsPro
formatterVariable={this.state.tooltipData}
option={pieOption}
height={500}
width={800}
/>
</View>
);
}
}
export default demo;
itemStyle: {
color: function(params){
if(params.value>12){
return '#c20919'
}else{
return '#0CF49B'
}
}
},
这种方式设置不生效
当前 setOption 视乎无法传递函数
Demo:
const echartsOption = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLabel: {
// 正常
formatter() {
return 'abc';
},
},
},
yAxis: {
type: 'value',
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
},
],
};
const setOptions = () => {
rnEchartsProRef.current?.setNewOption({
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLabel: {
// 在 setNewOption 中表现不正常, 视乎无法传递函数
formatter(params) {
return '456';
},
// formatter: '456', 在 setNewOption 中正常工作, 普通字符
},
},
yAxis: {
type: 'value',
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line',
},
],
});
};
"react": "17.0.2",
"react-native": "^0.66.3",
请问这个支持echarts的第三方扩展吗
给x轴加上axisPointer: {show: 'true' } 后点击屏幕只有第一次点击有效
在网页中能轻松取得,但在webview中需要依赖postmessage将数据发出去,但如果是内部这些api函数,好像就暴露不出去了,请教一下如何取得
华为mate30在集成了该组件的地方用Actions跳转到其他页面就会崩溃
手机: mate 30
版本:Android 10 emui 11
react-native-echarts-pro【1.7.5】
react-native version【0.63.3】
react-native-webview 【10.3.1】
Platform【ios】
System【14.4】
Demo:就是你的demo
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import Echarts from 'native-echarts';
export default class app extends Component {
render() {
const option = {
title: {
text: 'ECharts demo'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
return (
<Echarts option={option} height={300} />
);
}
}
AppRegistry.registerComponent('app', () => app);
when the type is radar, RNEChartsPro displays blank
dependent version:
"react-native": "0.64.2",
"react-native-echarts-pro": "^1.7.1",
"react-native-webview": "^11.13.1"
同样的option,xAxis的formatter在网页上可以实现换行的效果,在app上不行,有什么解决方案么
import React, { Component } from "react";
import { Text, View } from "react-native";
import Echarts from "react-native-echarts-pro";
export default class StockInDetail extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return (
<View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
<Echarts
option={{
xAxis: {
type: "category",
data: [1, 2, 3, 4],
axisLabel: {
interval: 0,
formatter: ["{value}", "2021年"].join("\n"),
},
},
yAxis: {
type: "value",
},
series: [
{
data: [150, 230, 224, 218],
type: "line",
},
],
}}
height={300}
/>
</View>
);
}
}
这里是bug的视频
这是我设置新options的代码
this.setState({
options: options
}}, () => {
this.echarts.setNewOption(options)
})
这是图表绘制的代码
<RNEChartsPro
ref={(echarts) => (this.echarts = echarts)}
webViewSettings={{
scrollEnabled: false,
style: { borderBottomLeftRadius: 20, borderBottomRightRadius: 20 },
}}
height={chartHeight}
width={chartWidth}
option={this.state.options} />
ios上渲染不出来报错:Webview Process Terminated
hello, I'm using your library to adjust project
but I have question about something.
I checked the module about event. example onPress, onDataZoom
but I need data about tooltip outside your module
I try to manipulate your module to listen event about tooltip
but Only receive event are Touch event OnPress or DataZoom.
would you able to get tooltip info if touch event triggered?
that event get outside on your module. that would be great to use my project.
but I really thank you about your sincere feedback on your project
Thank you
hello, i question about new issue,
i'm not familiar with class components, so, would you give me example about using hooks instead of class
especially I use candlestick chart about realtime, so I really appreciate about example using hooks with useRef
Thank you for your kindness
"react-native": "0.64.1",
"react-native-webview": "^11.6.6",
"react-native-echarts-pro": "^1.6.0",
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.