我想使用这个(http://vallandingham.me/vis/gates/)气泡图(在D3中制作):

...演练一些不同的场景。简而言之,我想可视化选举数据。政党获得了多少票,在什么情况下可能组建政府?
在数据层面,非常明显:名称、议会席位数、state1、state2、state3等。State1是1或2。1是政府中的一个地方,2是反对派。非常简单。
但该示例仅显示两种状态:“所有补助金”和“按年份补助金”。我想要的是更多像按年拨款这样的州。但我不是一个很好的程序员,无法弄清楚如何使这项工作有效。当我添加新状态时,可视化不起作用。
这是控制状态的代码(Coffee)。
class BubbleChart
constructor: (data) ->
@data = data
@width = 940
@height = 600
@tooltip = CustomTooltip("gates_tooltip", 240)
# locations the nodes will move towards
# depending on which view is currently being
# used
@center = {x: @width / 2, y: @height / 2}
@year_centers = {
"2008": {x: @width / 3, y: @height / 2},
"2009": {x: @width / 2, y: @height / 2},
"2010": {x: 2 * @width / 3, …Run Code Online (Sandbox Code Playgroud) 我正在制作气泡图,我在计算气泡半径方面遇到了麻烦.
我想使用一定数量来计算气泡半径,但数量变化很大.最小值为340,最大值为190000,但大多数点在5000到30000之间.这些范围太极端,无法直接使用数量作为半径.
有没有算法来"平滑"数据曲线?或者某种方法将原始数量映射到更合理的数量?
现在我的图表是一个散点图,因为我无法将其转换为没有半径的气泡图.
我正在尝试用水平排列的D3包布局创建一个wordcloud.
我没有限制宽度,而是限制高度.
包装布局自动处理圆圈,中间较大的圆圈和周围的圆圈.如果高度有限,则不是水平扩展圆形布置,而是减小每个圆的大小.
如果较大的圆圈周围没有更多空间,我怎样才能停止布局调整圆圈的大小并开始将它们添加到圆边.
我想要这样的东西:http: //imgur.com/7MDnKHF
但我只是实现了这个目标:http: //jsfiddle.net/v9xjra6c/
这是我目前的代码:
var width,
height,
diameter,
padding,
format,
pack,
svg,
node;
var initSizes = function() {
var dimensions = { width: 900, height: 288 };
width = dimensions.width;
height = dimensions.height;
diameter = Math.min(width, height);
padding = 12;
format = d3.format(',d');
};
var initLayout = function() {
pack = d3.layout.pack()
.sort(null)
.size([width, height])
.padding(padding);
};
var createSVG = function() {
svg = d3.select('.chart-container').append('svg')
.attr('width', width)
.attr('height', height)
.attr('class', 'bubble'); …Run Code Online (Sandbox Code Playgroud) 有谁知道如何将这个图表http://bost.ocks.org/mike/nations/中的圆圈更改为三角形并仍然动态增长和缩小?

我有这样的数据集(为简化说明而简化):
zz <- textConnection("Company Market.Cap Institutions.Own Price.Earnings Industry
ExxonMobil 405.69 50% 9.3 Energy
Citigroup 156.23 67% 18.45 Banking
Pfizer 212.51 73% 20.91 Pharma
JPMorgan 193.1 75% 9.12 Banking
")
Companies <- read.table(zz, header= TRUE)
close(zz)
Run Code Online (Sandbox Code Playgroud)
我想创建一个具有以下属性的气泡图(好像气泡图):
需要说明的是,每个公司都会出现在结果的每一列中,例如,ExxonMobil将接近INSTIT.Own列和Price.Earnings列的底部; 理想情况下,公司名称将出现在其两个泡沫中或旁边.
如何在气泡图中确定气泡的颜色,如果我想要显示为灰色,深灰色和浅灰色?或者,如果我想为所选变量的每个级别自己选择颜色?
我给你一个数据和图表的例子:
a<-c("np", "prepp", "vp", "animal", "artifact", "communication", "ipv", "isv")
b<-c(-0.51, 0.32, 0.85, -0.61, -0.36, 0.86, -0.02, 1.05)
c<-c(0.10, 0.25, -0.20, 0.99, 1.09, -0.35, 0.00, -0.08)
d<-c(68.23, 4.87, 41.42, 2.44, 19.49, 2.44, 112.09, 2.44)
e<-c("synt", "synt", "synt", "sem", "sem", "sem", "cx", "cx")
data<-cbind(a, b, c, d, e)
colnames(data)<-c("Variables", "Dim.1", "Dim.2", "Freq_pmw", "SynSem_index")
data<-as.data.frame(data)
data[, 2]<-as.numeric(as.character(data[, 2]))
data[, 3]<-as.numeric(as.character(data[, 3]))
data[, 4]<-as.numeric(as.character(data[, 4]))
radius<-sqrt(data$Freq_pmw/pi)
library(ggplot2); library(ggrepel)
plot0 <- ggplot(data, aes(x=Dim.1, y=Dim.2)) +
xlim(-1, 1.5) + ylim(-1, 3) +
theme_bw() + xlab("Dimension …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ggplot2 重新创建气泡图的可视化效果(我已经找到了在R中执行此操作的代码,但没有使用ggplot2包进行此操作)。到目前为止,这就是我所拥有的。目前,我的代码还存在其他一些错误,但是我希望图例显示同心圆的大小,而不是行中显示的圆。谢谢你的帮助!
原始可视化:

我的复制品:

我的(简体)代码:
crime <-
read.csv("http://datasets.flowingdata.com/crimeRatesByState2005.tsv",
header=TRUE, sep="\t")
ggplot(crime,
mapping= aes(x=murder, y=burglary))+
geom_point(aes(size=population), color="red")+
geom_text(aes(label=state.name), show.legend=FALSE, size=3)+
theme(legend.position = c(0.9, 0.2))
Run Code Online (Sandbox Code Playgroud) 我有乘客出行频率的数据集:
CountryOrigin - 有40多个国家名称
(印度,澳大利亚,中国,日本,巴塔姆,巴厘岛,新加坡)
CountryDestination - 有40多个国家名称(印度,澳大利亚,中国,日本,巴塔姆,巴厘岛,新加坡)
IND AUS CHI JAP BAT SING
IND 0 4 10 12 24 89
AUS 19 0 12 9 7 20
CHI 34 56 0 2 6 18
JAP 12 17 56 0 2 2
SING 56 34 7 3 35 0
Run Code Online (Sandbox Code Playgroud)
我需要x轴的原点位置名称和y轴的目的地名称,频率应表示为气泡的大小.
我创建了一个highcharts气泡图,如下所示:
如果可能的话,我希望a轴网格线位于气泡的中间.
有没有办法实现这个目标?
这是代码:
$(function () {
var data = [{ x: 0, y: 1, z: 1, dataSeries: 'data #1', dataPerc: '1.2' },
{ x: 1, y: 2, z: 2, dataSeries: 'data #2', dataPerc: '2.2' },
{ x: 2, y: 0, z: 0, dataSeries: 'data #3', dataPerc: '19.2' },
{ x: 3, y: 7, z: 7, dataSeries: 'data #4', dataPerc: '12.0' },
{ x: 4, y: 5, z: 5, dataSeries: 'data #5', dataPerc: '24' },
{ x: 5, y: …Run Code Online (Sandbox Code Playgroud) 在所有这些示例中,点/气泡大小基于第三因素,例如size.
但是,在我的数据中,我只有2个变量,xval和yval.
library("ggplot2")
xval <- c("0","0.5","0.25","0","0")
yval <- c("1","0.5","0.25","0.25","1")
df.test <- data.frame(xval,yval)
df.test
p <- ggplot(df.test, aes(x = xval, y = yval)) + geom_point()
p
Run Code Online (Sandbox Code Playgroud)
这是 df.test
xval yval
1 0 1
2 0.5 0.5
3 0.25 0.25
4 0 0.25
5 0 1
Run Code Online (Sandbox Code Playgroud)
这是 p
我想要的是每个点/气泡大小取决于该坐标的观测值的出现次数.例如,(0,1)将是其他点的两倍大.我想避免在我的数据框中添加第3列,并让R自动执行.
我不知道这是否可以在不必过多地使用数据的情况下完成...任何见解都会非常感激:)
bubble-chart ×10
r ×5
d3.js ×3
ggplot2 ×3
javascript ×3
algorithm ×1
charts ×1
coffeescript ×1
css ×1
dataframe ×1
force-layout ×1
highcharts ×1
legend ×1
scatter-plot ×1
svg ×1
transitions ×1