Power BI中是否有可用的视觉效果可以让我创建一个如下所示的图表?我可以使用散点图创建气泡,但我不知道如何在它上面添加一条线。
这是分别使用以下气泡,x标记和线值数据生成的。
Label Y Weight X
-------------------------
A 2.68% 30% 0.75
B 4.75% 4% 1.00
C -1.37% 20% 0.68
D 3.69% 45% 0.30
E 3.02% 12% 0.62
F 0.00% 8% 0.00
-------------------------
X 2.33% 0.50
Y 4.30% 0.67
Z 3.65% 0.72
-------------------------
0 2.47% 0.00
0.95 4.46% 0.95
1 4.77% 1.00
答案 0 :(得分:1)
如果不了解基础数据,您可以在此处将3个图表合并到一个网格中:气泡图,散点图和折线图。虽然不是一个不合理的设计,但我不知道任何单一的视觉效果(开箱即用或来自Office Store的现有自定义视觉效果)能够满足您创建上述精确图表的需求。
尽管如此,仍然有一些选择,其中没有一个是太棒了:
3个图表相互叠加:折线图和2个气泡图,所有图表都具有相同的固定比例。注意:对齐并不完美,我无法访问问题中使用的基础数据,因此值也是近似值。
<强>建议强>
就个人而言,我建议将R作为最佳下一步。它是一种非常灵活的编程语言,应该能够在内置和放大的内容中重新创建您想要的内容。支持的方式。 (究竟如何在R中重新创建它并不是我能回答的问题。)
答案 1 :(得分:1)
如果您愿意使用R,这肯定是可能的:
情节
还有一些细节需要保留(负y轴标签的X轴刻度线和红色字体颜色,将线放在气泡的前面,并调整气泡的大小),但如果这是您可以使用的东西。
只需导入以下数据集,插入R Visual,然后将以下代码段粘贴到R脚本编辑器中即可:
# Setup
library(dplyr)
library(ggplot2)
df <- dataset
#############
# Data
#############
df1 <- df %>% filter(Category == 'b1')
df2 <- df %>% filter(Category == 'b2')
dfL <- df %>% filter(Category == 'line')
#############
# Chart setup
#############
# Line
plt <- ggplot(data = dfL,aes(x=X, y=Y)) + geom_line(color = 'green3', size = 1.1) + ylim(-0.02, 0.05)
plt <- plt + scale_y_continuous(labels=scales::percent, limits = c(-0.02, 0.055))
plt <- plt + geom_hline(yintercept=0., colour="grey50", lwd=0.5)
plt <- plt + geom_point(data = df1, aes(x=X, y=Y, size = log(Weight), stroke = 8), color = 'lightsteelblue2')
# Bubble 1
plt <- plt + geom_text(data = df1, aes(label=Label),hjust=0.5, vjust=0.5)
plt <- plt + scale_size_continuous( trans="exp", range=c(1, 20))
# Bubble 2
plt <- plt + geom_point(data = df2, aes(x=X, y=Y), shape = 'x', size = 4.5, color = 'red')
plt <- plt + geom_text(data = df2, aes(label=Label),hjust=-1, vjust=0.55, size = 4)
############
# Aesthetics
############
# Remove clutter
plt <- plt + theme_minimal()
plt <- plt + theme(legend.position="none")
plt <- plt + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
# Axis format
plt <- plt + theme(axis.line.y = element_line(colour = "grey50"))
plt
我只需要稍微更改一下数据集,因为我需要一种方法来识别进入线,气泡和十字线的数据:
Category,Label,Y,Weight,X
b1,A,0.0268,0.30,0.75
b1,B,0.0475,0.04,1.00
b1,C,-0.0137,0.20,0.68
b1,D,0.0369,0.45,0.30
b1,E,0.0302,0.12,0.62
b1,F,0.00,0.08,0.00
b2,X,0.0233,,0.50
b2,Y,0.0430,,0.67
b2,Z,0.0365,,0.72
line,0,0.0247,,0.00
line,0.95,0.0446,,0.95
line,1,0.0477,,1.1
此外,我不得不将1,0.0477,,1.00
替换为1,0.0477,,1.1
以使直线变直。
这是我完整的设置的样子: