如何用RVisualization 输出X轴,y轴的双轴百分比堆积条形图

用户需求:

在最近的POWER BI项目,用户的需求如下:

实现在x轴按渠道的占比显示宽度,在y轴按品牌的在各个渠道的占比显示高度。

Power BI有个控件可以实现改需求,但是这是一个付费控件。我们最终使用R Script Visual实现需求。

实现效果: 

带代码摘抄:

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script:

# dataset <- data.frame(ChannelName, BrandName, Other TY)

# dataset <- unique(dataset)

# Paste or type your script code here:

library(ggplot2)

library(RColorBrewer)

library(reshape2) #提供melt()函数

library(plyr) #提供ddply()函数,join()函数

library(scales) #引入percent

columnTest <- isTRUE(nrow(dataset)>4)

if(columnTest) {

#按渠道,排名排序

df <-dataset[order(dataset$ChannelName,dataset$OtherTopN),]

names(df)<-c("Channel","Brand","Topn","Gr","Bps","BpsL","Unit","Value","ValueLY")

#消除空值错误

df[is.na(df)] = 0

l_unit = df[1,7]

dfch<-df[,c(1,6)]

dfch <- unique(dfch)

#按渠道求和

dfchsum <- aggregate(cbind(df$Value, df$ValueLY), by=list(df$Channel), FUN=sum)

names(dfchsum)<- c("Channel","Value","ValueLY")

#人工缩放x轴宽度

dfchsum <-dfchsum[order(dfchsum$Value),]

l_CPert<- 0

c_CPert<- 0

l_total <- sum(dfchsum$Value)

for (i in 1:nrow(dfchsum)){ #行-->渠道

dfchsum[i,"CPert"] <- dfchsum[i,2] / l_total * 100 #将各个渠道的占比

dfchsum[i,"CGr"] <- (dfchsum[i,2] / dfchsum[i,3] - 1)*100 #该渠道增长

dfchsum[i,"Bps"]<- dfch$Bps[dfch$Channel == dfchsum[i,1] ]

c_CPert<-round(dfchsum[i,"CPert"], 0)

if (l_CPert == c_CPert){

dfchsum[i,"Index"] = i_old

}else{

dfchsum[i

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值