当前位置: 首页 > 知识库问答 >
问题:

当数据集变大时,保持图形中的Y轴刻度,并在X轴上滚动。宽高比问题

令狐功
2023-03-14

我有一张x轴滚动的图表。(chartjs版本2.7.2)

https://jsfiddle.net/r70v96ta/2/

在代码末尾添加数据的地方,您可以选择要添加的记录数:

addData(5,图表测试)

如果我添加更多的记录,图形在Y轴上会变大。我希望数据在X轴上与滚动条一起变长,但保持相同的高度。我试着在画布被操纵的每一个地方硬编码高度,但是没有成功。我的理想是,一旦Y轴比例固定,就能够引入具有可变记录数的数据集,并将图形大小和比例保持在Y轴上,如果数据集更大,则使X轴滚动更大(意味着更长),反之亦然。

编辑:

我还试图为css类设置参数,以获得我所追求的Y轴纵横比约束。这似乎可以通过画布纵横比的相应排列来实现

如果in有任何不同,我的图被包装在一个带有这个css类的div元素中:

.mainBlank
{
    background-color: white;
    width: 100%;
    min-height: 100vh;
    max-height: 100%;
}

编辑2:

使用此html:

        <div style="width: 100%; overflow-x: auto; overflow-y: hidden">
            <div id="canvasParent" style="width: 2000px; height: 300px">
                <canvas id="chart1" height="300" width="0"></canvas>
            </div>
        </div>

并在数据更改时设置客户端中的宽度:

        const newWidth = (chart.data.datasets[0].data.length * 30).toString() + "px";
        $('#canvasParent').css({ width : newWidth});

我达到了预期的效果。然而,我不明白为什么在小提琴的例子中图表高度会改变。


共有2个答案

程修雅
2023-03-14

似乎为画布定义了初始宽度和高度,因此为其定义了宽高比(使用

因此,更改

下面是完整正确的html,可以粘贴在小提琴中,以便在addData(500,chartTest)中添加大量数据之后 达到了理想的高度保持效果。

欢迎任何进一步的解释或我可能错过的要点。

<div class="chartWrapper">
  <div class="chartAreaWrapper">
  <div class="chartAreaWrapper2">
      <canvas id="chart-Test" height="300" width="0"></canvas>
  </div>
  </div>
  <canvas id="axis-Test" height="300" width="0"></canvas>
</div>

阙俊友
2023-03-14

这个问题在这里已经得到了回答

如果禁用“选项”中的“保持纵横比”,则它将使用可用高度:

var chart = new Chart('blabla', {
  type: 'bar',
  data: {},
  options: {
    maintainAspectRatio: false,
  }
});
 类似资料:
  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5为间隔绘制。有没有办法让它显示1的间隔?

  • 我正在尝试修复python如何绘制数据。 说 和 然后我会做: x轴的刻度以5的间隔绘制。有没有办法让它显示1的间隔?

  • 问题内容: 我有一个始终从x = 0开始的JFree XY折线图。然后,根据属性文件中用户定义的设置,应用程序将根据该数字(以分钟为单位)递增。 例如,x = 0开始时,用户定义的设置为5,因此刻度变为0、5、10、15、20…,或者用户设置为3,因此变为0、3、6、9、12…非常简单。 我遇到的问题是图表开始的方式。如果我从0开始,则0在图形的中间,而不是在左下角的-0.0000005,-0.0

  • 问题内容: 我正在尝试修复python如何绘制数据。 说 和 然后我会做: 并且x轴的刻度线以5的间隔绘制。是否有办法使其显示1的间隔? 问题答案: 你可以使用以下命令显式设置要在刻度线打勾的位置: 例如, (以防万一,使用它而不是Python的range函数,它们是浮点数而不是整数。) 的(或)功能将自动设置默认x和y限制。如果你希望保留这些限制,而只是更改刻度线的步长,则可以用来发现已设置的限

  • 我正在使用JFreeChart制作一个条形图与时间。由于某些原因,在这些图表上,x轴上的刻度标签变为“…”偶尔地似乎有足够的空间来扩展标签,但它只是切断了整个事情。我怎样才能解决这个问题。 我试着用图片按钮上传一张图片,但它似乎不起作用。 下面是与我的项目设置相似的代码。奇怪的是,它的行为不同于我的建筑。在我的上面,不是说“侯......”,而是说“......”。请忽略评论和所有其他未编辑的东西

  • 我有一张图表,我已经知道我需要的刻度数。有3个是分组条形图。我在绞尽脑汁想怎么强迫它。现在它显示0到我的数据集中的任何数字,并根据需要自动缩放。 默认情况下,假设我使用数字来缩放,但在这种情况下,它是Y轴上的正、中性、负(字面意思是这些标签),它们是与X轴上的特定日期相关的数据点(有2个分组条标记为AM/PM)。 图表。js文档似乎没有解释如何在ticks配置的数字之外进行调整,我也不确定如何将其