我正在尝试制作一个柱状图,其中 y 轴表示平均粒径,x 轴表示沿横断面的距离,每个系列表示日期和/或数字值(实际上并不重要)。
这是一个我的数据图片 CSV 格式如下:
Date,,Grain Size (mm),Distance along Transact
8/7/2013,2,0.7912,9
4/5/2014,3,0.513,9
6/5/2015,4,0.4644,9
6/26/2013,1,1.0852,12
6/5/2015,4,1.8515,12
8/7/2013,2,1.812,15
4/5/2014,3,6.371,15
6/5/2015,4,1.602,15
6/26/2013,1,1.0251,17
6/5/2015,4,5.6884,17
6/26/2013,1,0.4166,25
6/5/2015,4,24.8669,25
6/26/2013,1,0.5223,32.5
6/5/2015,4,37.387,32.5
6/26/2013,1,0.5159,39.5
6/5/2015,4,0.6727,39.5
我在 Excel 2010 中尝试了几种不同的方法,但还是搞不定。我希望,假设第一个位置 9 有三列,然后 12 有两列。如果这很重要,假设总距离是 50。此数据的结果应该有 7 组沿横断面/x 轴的列。
我曾尝试使用 Python 来实现这一点,但我的编码知识几乎为零。这是我目前的代码:
import numpy as np
import matplotlib.pyplot as plt
grainsize = [0.7912, 0.513, 0.4644, 1.0852, 1.8515, 1.812, 6.371, 1.602, 1.0251, 5.6884, 0.4166, 24.8669, 0.5223, 37.387, 0.5159, 0.6727]
series = [2, 3, 4, 1, 4, 2, 3, 4, 1, 4, 1, 4, 1, 4, 1, 4]
distance = [9, 9, 9, 12, 12, 15, 15, 15, 17, 17, 25, 25, 32.5, 32.5, 39.5, 39.5]
如果有人碰巧知道可以使用的代码,那将非常有帮助。关于如何在 Excel 中执行此操作的建议也很棒。
希望这是有意义的。任何帮助都将不胜感激!
答案1
这里有一种方法:创建一个新的表格,以不同的方式列出数据,然后根据该表格制作图表。这不是一个完美的解决方案,但它很有效,而且随着数据的增长,很容易扩展。
首先,结果如下:
您可以在列中看到原始数据A:D
。我实际上对其进行了修改,因为有两个非常大的值,它们使得很难看到三列。这F1:I8
是我制作的表格,图表位于右下角。您可以按照以下方法重复此过程:
- 计算出最常见值在列中出现的次数
Distance along Transact
(从现在开始称为Distance
)。一种简单的方法是使用公式=COUNTIF(D:D,MODE(D:D))
。 - 在新表中创建许多列并使用数字作为标题。(1、2、3……)
- 在 中
F2
,使用公式:=SMALL(D:D,1)
得到最低Distance
值。 - 在
F3
,使用大批公式(使用+ +{=SMALL(IF(D:D>F2,D:D),1)}
输入)并根据需要向下拖动公式。CtrlShiftEnter - 在
G2
,使用大批公式{=INDEX($C:$C,SMALL(IF($D$2:$D$17=$F2,ROW($D$2:$D$17),9E+99),G$1))}
并将其向下拖动以填充表格。忽略#REF!
错误,因为它们不会显示在图表上。 - 根据新表的范围创建图表。
我对上面的截图做的唯一编辑是减少列之间的间隙,以便您能更好地看到它。
这种方法的缺点是,如果数据点数量少于最大数量,它会在 X 轴值之间留下空白Grain Size
。如果您想添加数据标签,则错误将显示为零,因此请使用自定义格式格式化数据标签#,##0;-#,##0;;
以隐藏零。
答案2
这里还有另一个可以考虑的选项,即使用 Excel 的内置效率表格和数据透视表。
- 将数据转换为列
Data > Text-to-Columns
- 根据数据创建 Excel 表格(选定数据中的一个单元格)
Insert > Table
- 从您的表格创建一个数据透视表(选择表格中的一个单元格)
Insert > Pivot Table
,使用以下设置:- 列标签: 第 1 列
- 行标签: 沿交易距离
- 值: 平均粒径
- 从数据透视表创建数据透视图(选择数据透视表中的一个单元格)
Insert > Charts > 2-D Column Chart
现在,无需任何公式,您就拥有了一系列链接的对象,这些对象将随着它们之间的变化而刷新(例如,向数据表添加行,过滤数据透视图或数据透视表)。
为了从该解决方案中获得最大价值,您可以将表设置为从不同的数据源(例如 SQL Server)自动刷新,以确保您的表/图表始终是最新的。