搜索列表以生成不同的系列,然后绘制其对应的值

时间:2016-04-19 18:52:00

标签: excel vba excel-vba plot excel-2013

首先我要说的是我对这个网站和VBA都很陌生(我参加了高中速成班,所以我得到了基本的编码术语)。我一直在寻找几天来找到能够满足我需求的代码,但我还没有找到任何东西。

基本上我有一堆筛沙样品。每个样本都有自己的表格。从这里开始,我有一个主汇总表,收集我需要从这些其他表中绘制的数据并将其放入表中。它还可以找到样本的类型和测试日期。有6种不同类型的样本(到目前为止)。

另外,我需要在x轴上绘制日期汇总表,在y轴上绘制百分比。我需要每个样本类型都有自己的系列。我已经到了正确分割所有6个系列的地方(虽然我确信代码非常低效)但我无法弄清楚如何从要绘制的样本类型旁边的列中获取值。换句话说,一切都停留在" 0"因为它现在正按字符串排序。

我已将我的代码和excel表格的文本版本放在下面。我感谢您给我的任何帮助!

Emission.l <- melt(Emission.Aerosol, id.vars = 'Year', 
                   measure.vars = c('SO2.tons', 'NOx.tons'))

gp <- ggplot(Emission.l, aes(x = Year, y = value, fill = variable))
gp <- gp + theme(axis.text.x = element_text(angle = 90, hjust = 1))
gp <- gp + geom_bar(stat = 'identity', position = 'dodge', fill=c("red","blue"))
gp <- gp + ggtitle(Emission.Aerosol$Facility.Name)
gp <- gp + ylab("Emission(Tons)")
gp <- gp + scale_fill_discrete( name = '', 
                                labels = c('SO2 (tons)', 'NOx (tons)'))
gp <- gp + scale_x_continuous(breaks = 2003:2015)


ggsave(filename= paste0(Emission.Aerosol$Facility.Name,".png"),device = "png", 
       width = 15, height = 10,units = "cm", dpi = 100)

1 个答案:

答案 0 :(得分:0)

如果需要X为日期的图,Y为百分比,“Z”为类型。然后,您需要执行以下操作:

  1. 在Excel中,您需要单独创建每个系列 - 因此,如果您说5种类型,则需要分别绘制每个系列。

  2. 最简单的方法是按类型排序,遍历所有行,并找出边界,因此类型1可能是行2-11,类型2 12-15等。

  3. 然后你可以绘制每个系列

  4. 像这样的东西 - 使用上面找到开始和结束的地方:

    For a = 1 To lastrow
        With ActiveChart 
                With .SeriesCollection.NewSeries 
                    .XValues = Sheets(strName).Range("E" & startx & ":E" & endx)
                    .Values = Sheets(strName).Range("E" & starty & ":E" & endy)
                    .Name = strName 
                End With 
            End If 
        End With 
    Next a