4

我创建了一个metricgraphics图表并试图增加轴标签的字体大小: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 或更好的图表选项来解决这个问题?

4

1 回答 1

0

使用 CSS

  • 您可以使用 定位年份标记transform: translate(x,y)
  • 您可以使用W3C 规范中列出的所有属性设置文本样式,例如将其设为粗体或更改颜色:

    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>

使用 Javascript

  • 您始终可以使用document.getElementById("my-svg-id").contentDocument文本元素获取 SVG 元素的内部 DOM,并通过设置它们的属性来操作它们。例如,在 svg-dom 中
    使用 ) 使标记变为红色。setAttribute("fill","red");
  • 但是在您的情况下,svg 位于 iframe 中,由于 same-origin-policy ,您无法访问该 iframe
于 2015-11-30T01:55:20.697 回答