在metricsgraphics图表中设置轴标签

时间:2015-02-10 23:11:20

标签: javascript css metricsgraphicsjs

我创建了一个metricsgraphics图表,并试图增加轴标签的字体大小:http://jsfiddle.net/hk63jfg3/1/

我的js:

 MG.data_graphic({
    title: "sightings",
    data: [{
        'date': new Date('2014-10-28'),
        'value': 7
    }, {
        'date': new Date('2014-11-01'),
        'value': 12
    }, {
        'date': new Date('2014-11-02'),
        'value': 18
    }],
    width: 400,
    height: 250,
    target: '#sightings',
    x_accessor: 'date',
    y_accessor: 'value',
});

和CSS:

.mg-x-axis text, .mg-y-axis text, .mg-histogram .axis text {
    font-size: 1.5rem;
}

年份和月份相互碰撞,有没有办法通过CSS或更好的图表选项来解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用CSS

  • 您可以使用transform: translate(x,y)
  • 来定位年度标记
  • 您可以使用列出in the W3C specification的所有属性设置文本样式, 例如使其变粗或改变颜色:

    text {
        font-weight: bold;
        fill: rebeccapurple;
        font-size: 30px;
    }
    
  • 如果年份标记与月份标记发生碰撞,请将其与translate(0,10px)分开并使年份标记显示为:

    svg {
        overflow: visible !important;
    }
    



$(function () {
    MG.data_graphic({
        title: "sightings",
        data: [{
            'date': new Date('2014-10-28'),
            'value': 7
        }, {
            'date': new Date('2014-11-01'),
            'value': 12
        }, {
            'date': new Date('2014-11-02'),
            'value': 18
        }],
        width: 400,
        height: 250,
        target: '#sightings',
        x_accessor: 'date',
        y_accessor: 'value',
    });
});
$(".mg-year-marker text").attr("fill", "red");

.mg-x-axis text, .mg-y-axis text, .mg-histogram .axis text {
    font-size: 1.5rem;
}



svg {
    overflow: visible !important;
    height: 300px;
}

g.mg-year-marker {
     transform: translate(100px, 15px);
}

g.mg-year-marker text {
    font-size: 2rem;
    fill: rebeccapurple;
    font-weight: bold;
}

<link href="http://metricsgraphicsjs.org/css/metricsgraphics.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="http://metricsgraphicsjs.org/js/metricsgraphics.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body>
    <div id='sightings'></div>
</body>
&#13;
&#13;
&#13;

使用Javascript

  • 您始终可以使用document.getElementById("my-svg-id").contentDocument获取SVG元素的内部DOM,并通过设置其属性来操作文本元素。
    例如。在svg-dom中使用setAttribute("fill","red");)制作标记红色。
  • 但在您的情况下,svg位于iframe中,由于同源策略,您无法访问该页面。