【问题标题】:How to position/expand axis X starting point so that it aligns with axis Y lowest point如何定位/扩展 X 轴起点,使其与 Y 轴最低点对齐
【发布时间】:2014-10-24 13:05:10
【问题描述】:

创建新图表时,默认第一个点和最后一个点不与 Y 轴对齐,而是位于 X 轴中间的某个位置。

我不知道如何把“2010”一直放在左边,把“TTM”放在右边。几乎一半的图表区域空间就这样丢失了。

在 Excel 中它是“在刻度线之间定位 X 轴”选项,但我不知道如何在 vb.net 中做到这一点。

谢谢

【问题讨论】:

  • 哪个组件创建了您的图表?
  • 如果我正确理解了您的问题,图表是由 4 行 (DGV) 创建的。
  • 我的意思是,由于我对 Excel 图表和 Google 图表都不满意,并且希望拥有我的任何应用程序图表功能,我最终为用户创建了一整套类用于渲染图表的控件:轴、背景、线条、标题、饼图、2D、3D 等。在 vbNet 中 .. 并且可以输出像您这样的图表。 Excel 也可以,SVG 中也可以使用 google。也许其他应用程序.. 您刚刚说您知道如何在 Excel 中执行此操作,所以您不是在谈论 Excel。 “但在 vbNet 中” -> 要么是某些图表 API 上的 ASP,要么是像我这样的位图上的用户生成图表。您的图表是如何创建的?
  • 我使用 Excel 作为参考,以防我不够清楚我想要什么。我认为在 2 个 Y 轴之间传播 X 轴点默认情况下是没有间隙的,但我错了。另外,我在 VBStudio 属性中找不到任何会改变它的东西。
  • 回答您的问题 CSV 从 MorningStar 网站(过去 5 年的 KeyRatios)导入到 datagridview。轴 X 点是年份,1 个系列包含 DGV 行中的一组值,依此类推。然后我使用 For 循环为 DGV 中的每个系列添加了点。如果您愿意,我可以编辑原始帖子以提供用于创建该图表的代码,但是那里没有任何东西可以帮助解决我的问题,因为我什至不知道该使用什么(缩放图表区域或...)实现这一目标。

标签: vb.net charts alignment axis


【解决方案1】:

嗯,我明白了:您正在使用:

  • System.Windows.Forms.DataVisualization.Charting.Chart
  • System.Web.UI.DataVisualization.Charting.Chart

这就是我问“哪个组件创建你的图表?”

我结束创建自己的从 A 到 Z 呈现图表的方式的原因之一就是像你这样的问题。

无论如何,您的问题是“添加轴然后修改最小/最大综合症”。我不经常使用你的组件,所以我真的没有解决这个问题。我所知道的是:

  • 当您创建 Charting.Chart 组件(或将一个添加到您的项目)时
  • 然后添加 X 和 Y 轴

^^ 那些有点被锁定 :( - 之后没有检查如何修改它们...
我很久以前作为解决方法所做的是:

  • 以编程方式创建 X 和 Y 轴而不将它们添加到 ChartArea
  • 定义 X 最小值和最大值
  • 然后当我完成后,相应地设置 chartArea X 和 Y 轴

    ' Imports System.Windows.Forms.DataVisualization.Charting
    
    ' ...
    
    xAxis = New Axis() ' <- dont tie the axis to the chartArea
    
    ' now, either define the MarginVisible Property to False :
    xAxis.IsMarginVisible = False
    ' either specify the min/max (and eventually the Crossing Property)
    xAxis.Minimum = xValues(0)
    xAxis.Maximum = xValues(xValues.Length - 1)
    xAxis.Crossing = xValues(0) ' optional
    
    chart1Area.AxisX = xAxis
    chart1Area.AxisY = New Axis() ' everything auto on Y side.
    
    ' ...
    

顺便说一句,我的xValues 是一个数值数组。既然你把你的年份作为字符串,我不知道它会如何工作。也许通过使用某种数字转换技巧.. :/

到目前为止,我还不习惯Charting.Chart,所以希望其他人能更好地帮助你。由于我要求您澄清上面 cmets 中的一些内容,这就是我到目前为止可以分享的内容。如果我记得另一种解决方法(不知何故忘记了很久以前的图表),我会编辑这篇文章。

祝你好运。

【讨论】:

  • 你花时间详细解释我遗漏的一切,现在我的图表看起来好多了。我没有想到我必须为 X 轴定义 Min 和 Max 值,对我来说合乎逻辑的事情是最低点应该一直到一侧,最高到另一侧(默认情况下)。非常感谢你所做的一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 2022-12-19
  • 2020-08-31
  • 2016-07-29
  • 1970-01-01
相关资源
最近更新 更多