坐标轴组件。
- 标题 title
- 坐标轴线 line
- 刻度文本 label
- 刻度线 tickLine
- 次刻度线 subTickLine
- 网格线 grid
通常的图表都有 x 轴和 y 轴,默认情况下,x 轴显示在图表的底部,y 轴显示在左侧(多个y轴时可以是显示在左右两侧)。通过为坐标轴配置 position 属性可以改变坐标轴的显示位置。
坐标轴上的所有的配置属性都是围绕在坐标轴各个组成上的。
-
<Axis />
坐标轴组件只可以作为<Chart />
组件 或者<View />
组件的孩子,同时<Axis />
组件下不能嵌套其他图表组件。 -
BizCharts中将Axis抽离为一个单独的组件,不使用Axis组件则默认不显示所有坐标轴及相关的信息,如下所示:
// 不显示坐标轴
<Chart width={600} height={400} data={data}>
<Geom type="interval" position="genre*sold" color="genre" />
</Chart>
- 使用Axis组件时,必须指定当前坐标轴对应数据源中的字段名(字段名为name),否则该坐标轴相关配置信息将不起作用;
// 指定坐标轴对应数据源中的字段名
<Chart width={600} height={400} data={data}>
<Axis name="sold" />
<Geom type="interval" position="genre*sold" color="genre" />
</Chart>
- 一旦使用
<Axis/>
组件,那么所有的坐标轴都会显示,如若需要隐藏某一个坐标轴及相关信息,务必将visible参数并置为false,如下所示:
// 只显示其中一条坐标轴
<Chart width={600} height={400} data={data}>
<Axis name="sold" />
<Axis name="genre" visible={false} />
<Geom type="interval" position="genre*sold" color="genre" />
</Chart>
当前坐标轴对应数据源中的字段名(必填)
当前坐标轴是否需要可见
当前坐标轴的摆放位置。
当前坐标轴标题的样式配置。
- 样式配置
{
autoRotate: {Boolean} // 是否需要自动旋转,默认为 true
offset: {Number}, // 设置标题 title 距离坐标轴线的距离
textStyle: {
fontSize: '12',
textAlign: 'center',
fill: '#999',
fontWeight: 'bold',
rotate: {角度}
}, // 坐标轴文本属性配置
position: 'start' || 'center' || 'end', // 标题的位置,**新增**
}
- title显示文本配置 当需要配置坐标轴标题文本时,在该轴的 scale 中设置 alias 属性,如下所示,更多 scale 设置请查看 scale。
const scale = {
sales:{
alias:'标题名称'
}
};
<Chart scale={scale} />
当前坐标轴轴线的样式配置。
//可配置样式
{
stroke: 'dddddd',
fill: '#ffffff',
lineDash: [2, 2, 3],
lineWidth: 3
}
当前坐标轴刻度线的样式配置。
//可配置样式
{
lineWidth: 1, // 刻度线宽
stroke: '#ccc', // 刻度线的颜色
length: 5, // 刻度线的长度, **原来的属性为 line**
}
- 刻度线个数、范围、内容可以通过该轴的 scale 配置,如下所示,更多 scale 配置请查看 scale。
const scale = {
sales:{
min:0,//定义数值范围的最小值
max:10000,//定义数值范围的最大值
ticks:[100, 1000, 2000, 3000],//用于指定坐标轴上刻度点的文本信息,当用户设置了 ticks 就会按照 ticks 的个数和文本来显示。
tickInterval:1000,//用于指定坐标轴各个标度点的间距,是原始数据之间的间距差值,tickCount 和 tickInterval 不可以同时声明。
tickCount:10,//定义坐标轴刻度线的条数,默认为 5
}
};
<Chart scale={scale} />
当前坐标轴刻度文本的样式配置。 可配置值有:
{
offset: {Number}, // 设置坐标轴文本 label 距离坐标轴线的距离
textStyle: {
textAlign: 'center', // 文本对齐方向,可取值为: start middle end
fill: '#404040', // 文本的颜色
fontSize: '12', // 文本大小
fontWeight: 'bold', // 文本粗细
rotate: 30,
textBaseline: 'top' // 文本基准线,可取 top middle bottom,默认为middle
} || {Function}, // 支持回调
autoRotate: {Boolean} // 是否需要自动旋转,默认为 true
formatter: {Function}, // 回调函数,用于格式化坐标轴上显示的文本信息
htmlTemplate: {Function}, // 使用 html 自定义 label
}
- label显示文本等配置也可以通过该轴的 scale 配置,如下所示,更多 scale 配置请查看 scale。
const scale = {
sales:{
min:0,//定义数值范围的最小值
max:10000,//定义数值范围的最大值
ticks:[100, 1000, 2000, 3000],//用于指定坐标轴上刻度点的文本信息,当用户设置了 ticks 就会按照 ticks 的个数和文本来显示。
tickInterval:1000,//用于指定坐标轴各个标度点的间距,是原始数据之间的间距差值,tickCount 和 tickInterval 不可以同时声明。
tickCount:10,//定义坐标轴刻度线的条数,默认为 5
}
};
<Chart scale={scale} />
当前坐标轴网格线的样式配置。当 grid={null}
时,则不现实网格线。
//可配置样式
{
align: 'center', // 网格顶点从两个刻度中间开始
type: 'line' || 'polygon', // 网格的类型
lineStyle: {
stroke: '#d9d9d9', // 网格线的颜色
lineWidth: 1, // 网格线的宽度复制代码
lineDash: [4, 4] // 网格线的虚线配置,第一个参数描述虚线的实部占多少像素,第二个参数描述虚线的虚部占多少像素
}, // 网格线的样式配置,原有属性为 line
alternateColor: '#ccc' || ['#f80', '#ccc'], // 为网格设置交替的背景色,指定一个值则先渲染奇数层,两个值则交替渲染。**代替原有的 odd 和 even 属性**
}
当前坐标轴次刻度线个数。
当前坐标轴次刻度线样式配置。
//可配置样式
{
lineWidth: 1, // 子刻度线宽
stroke: '#ddd', // 子刻度线颜色
length: 3, // 自刻度线的长度
}
坐标轴有很多配置是需要通过配置对应的 scale 才能达到。以下列举了几个常用的 scale 配置,不同类型的 scale 配置的属性略微不同,想知道更多请查看scale文档
需要设置对应 scale 中的 min、max 属性。
const scale = {
sales:{
type:"linear",
min:0,
max:1000,
},
}
<Chart scale={scale}>
<Geom type="line" position="city*sales" />
<Axis name="sales"/>
</Chart>
需要设置对应 scale 中的 tickCount 属性。
const scale = {
sales:{
type:"linear",
tickCount:10,
},
}
<Chart scale={scale}>
<Geom type="line" position="city*sales" />
<Axis name="sales"/>
</Chart>
对于连续类型的数据,还支持设置坐标轴刻度线的间距(tickInterval 属性),同样需要在 scale 中进行配置,但是需要说明的是,tickInterval 为原始数据值的差值,并且 tickCount 和 tickInterval 不可以同时声明。
const scale = {
sales:{
type:"linear",
tickInterval:100,
},
}
<Chart scale={scale}>
<Geom type="line" position="city*sales" />
<Axis name="sales"/>
</Chart>
对于分类数据的坐标轴两边默认会留下一定的空白,连续数据的坐标轴的两端没有空白刻度。 是否两端有空白是列定义里面 range 属性决定的,分类列的 range 的默认值是 [ 1 / (count - 1), 1 - 1 / (count - 1) ],可以修改这个值达到改变空白大小的目的。
const scale = {
city:{
type:"cat",
range: [ 0, 1 ]
},
}
<Chart scale={scale}>
<Geom type="line" position="city*sales" />
<Axis name="sales"/>
</Chart>
不同的坐标系下坐标轴的显示不一样,默认的配置项也不同
- 极坐标下的坐标轴上默认不显示title,栅格线有圆形和多边形两种;
- theta、helix 坐标系默认不显示坐标轴;
- polar 坐标系发生 transpose 时也不显示坐标轴。