gpt4 book ai didi

excel - 在excel中绘制区间图表

转载 作者:行者123 更新时间:2023-12-02 11:53:00 25 4
gpt4 key购买 nike

excel可以画这样的图表吗?如何? enter image description here

最佳答案

这是一个有趣的事情。我不知道是否有一个好方法来扩展 Excel 中现有盒须图的功能,但幸运的是,我能够想出一种快速而肮脏的方法来用散点图来伪造它。基本上,我们只是沿着间隔迭代并选择足够的点来显示在散点图上,它看起来与盒须图没有什么区别。因为它使每个间隔成为不同的系列,所以您还可以设置颜色等格式,以更轻松地区分它们。

这是我的一些数据的最终结果(您可以修改底层散点图使用的标记来更改线条粗细等内容):

Interval Chart Example

代码正在寻找一个格式化的表格,其中包含每个系列的名称以及每个维度的最小/最大的单独列。输入表的格式如下:

Interval Sheet

最后,这是我运行来生成它的宏:

' Build and display an "Interval Chart"
Public Sub MakeIntervalChart()
Dim inRow As Long, outRow As Long, lastRow As Long, startRow As Long
Dim interX As Double, interY As Double, intervalAmt As Double
intervalAmt = 0.01 ' CHANGE ME

' Source / Destination Worksheet Parameters (CHANGE ME)
Dim wsSource As Worksheet, wsDest As Worksheet
Set wsSource = Worksheets("Data")
Set wsDest = Worksheets.Add()
wsDest.Name = "IntervalChart"

' Create output chart
Dim boxChart As Chart
Set boxChart = wsDest.Shapes.AddChart2(240, xlXYScatter).Chart
boxChart.HasLegend = True

outRow = 1
lastRow = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row

For inRow = 2 To lastRow
' Retrieve current interval (CHANGE ME)
Dim seriesName As String
Dim minX As Double, maxX As Double, minY As Double, maxY As Double
seriesName = wsSource.Cells(inRow, 1)
minX = wsSource.Cells(inRow, 2)
maxX = wsSource.Cells(inRow, 3)
minY = wsSource.Cells(inRow, 4)
maxY = wsSource.Cells(inRow, 5)

startRow = outRow

'intervalAmt = (maxX - minX) / 50.0

' Top and Bottom of box
For interX = minX To maxX Step intervalAmt
wsDest.Cells(outRow, 1) = seriesName
wsDest.Cells(outRow, 2) = interX
wsDest.Cells(outRow, 3) = minY
outRow = outRow + 1
wsDest.Cells(outRow, 1) = seriesName
wsDest.Cells(outRow, 2) = interX
wsDest.Cells(outRow, 3) = maxY
outRow = outRow + 1
Next

'intervalAmt = (maxY - minY) / 50.0

' Left and Right of box
For interY = minY To maxY Step intervalAmt
wsDest.Cells(outRow, 1) = seriesName
wsDest.Cells(outRow, 2) = minX
wsDest.Cells(outRow, 3) = interY
outRow = outRow + 1
wsDest.Cells(outRow, 1) = seriesName
wsDest.Cells(outRow, 2) = maxX
wsDest.Cells(outRow, 3) = interY
outRow = outRow + 1
Next

' Add new series (box)
With boxChart.SeriesCollection.newSeries()
.Name = seriesName
.XValues = wsDest.Range("B" & startRow & ":B" & outRow - 1)
.Values = wsDest.Range("C" & startRow & ":C" & outRow - 1)
End With
Next
End Sub

您需要更改输入/输出表名称和输入表的预期格式等内容(假设您不想受我的格式困扰)。您还需要调整数据的 0.01 参数。我给它留了一个非常小的间隔,您可以将其与您的样本数据类型一起使用。您可以根据需要将此增量值调整为 0.01 以外的值,也可以使用注释行中的代码 intervalAmt = (maxX - minX)/50.0 并调整 50.0 值(其中将是为框的每个部分绘制的标记数量)。调整这些值时要小心 - 您很容易会浪费大量时间来生成比实现直线所需的更多标记。

关于excel - 在excel中绘制区间图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com