我试图使用该matplotlib.hist()函数绘制直方图,但我不知道该怎么做.
我有一份清单
probability = [0.3602150537634409, 0.42028985507246375,
0.373117033603708, 0.36813186813186816, 0.32517482517482516,
0.4175257731958763, 0.41025641025641024, 0.39408866995073893,
0.4143222506393862, 0.34, 0.391025641025641, 0.3130841121495327,
0.35398230088495575]
Run Code Online (Sandbox Code Playgroud)
和名单(字符串)列表.
如何将概率作为每个条形的y值和名称作为x值?
是否有一种简单的方法可以增加绘图标题和它下面的绘图区域之间的空间(带有数据的框).同样,我更喜欢在轴标题和轴标签之间留一些空格.
换句话说,有没有办法"将标题向上移动,y轴标题稍微向左移动,x轴标题稍微向下移动"?
我无法弄清楚如何手动设置此图的图例.我真正想要的只是右边一个简单的图例,它使用了三种颜色并且每个颜色旁边都有一个名称.

当前代码如下所示:
a <-c("S1","S2","S3","S4","S5","S6","S7","S8","S9") #names
b <-c(0.23,0.26,0.55,0.56,0.36,0.23,0.18,0.06,0.04) #mean t0
c <-c(0.64,0.6,0.81,1.4,0.89,0.55,0.48,0.22,0.09) #mean t1
d <-c(0.20,0.23,0.52,0.53,0.33,0.20,0.15,0.04,0.03) #SD low t0
e <-c(0.26,0.29,0.58,.59,0.39,0.26,0.21,0.08,0.05) #SD high t0
f <-c(0.67,0.63,0.86,1.44,0.93,0.59,0.51,0.25,0.10) #SD high t1
g <-c(0.61,0.57,0.78,1.36,0.85,0.53,0.45,0.19,0.08) #SD low t1
h <-c(0.41,0.34,0.26,0.84,0.53,0.32,0.30,0.16,0.05) #absolute change
data <- data.frame(a,b,c,d,e,f,g,h)
ggplot(data=data,aes(a)) +
geom_bar(stat="identity", aes(y=h),fill="#62c76b",colour="#333333")+ #green
geom_line(aes(y=b,group=1),size=1.0,colour="#f04546") + #red
geom_point(aes(y=b),size=3, colour="#f04546") + #red
geom_errorbar(aes(ymin=d, ymax=e), colour="#f04546", width=0.1, size=.8) +
geom_line(aes(y=c,group=1),size=1.0,colour="#3591d1") + #blue
geom_point(aes(y=c),size=3, colour="#3591d1") + #blue
geom_errorbar(aes(ymin=f, ymax=g), colour="#3591d1", width=0.1, size=.8) +
ylab("Symptom severity") + xlab("PHQ-9 symptoms") +
ylim(0,1.6) +
theme_bw() …Run Code Online (Sandbox Code Playgroud) 我希望我的力导向布局中的一些节点忽略力并基于节点的属性保持在固定位置,同时仍然能够被拖动并在其他节点上施加排斥并保持其链接线.我觉得它会像这样简单:
force.on("tick", function() {
vis.selectAll("g.node")
.attr("transform", function(d) {
return (d.someAttribute == true) ?
"translate(" + d.xcoordFromAttribute + "," + d.ycoordFromAttribute +")" :
"translate(" + d.x + "," + d.y + ")"
});
});
Run Code Online (Sandbox Code Playgroud)
我还尝试手动设置节点的x和y属性on-tick,但是如果受到力的影响,链接将继续浮动到节点所在的位置.
显然我对这应该如何工作有一个基本的误解,所以有人可以指出一个例子,其中一些节点固定在它们的位置(但仍然是可拖动的),其余的节点是围绕力导向的,并且所有链接仍在工作?
javascript data-visualization d3.js force-layout d3-force-directed
我试图通过试验他们的一个基本气泡图来学习D3 .第一项任务:弄清楚如何拖动气泡并让它在被拖动时成为最顶层的物体.(问题是让D3的对象模型映射到DOM上,但我会到达那里......)
要拖动它,我们可以使用它们提供的代码简单地调用d3的拖动行为:
var drag = d3.behavior.drag()
.on("dragstart", dragstart)
.on("drag", dragmove)
.on("dragend", dragend);
Run Code Online (Sandbox Code Playgroud)
效果很好.拖得好.现在,我们如何让它成为最顶级的项目?在这里搜索"svg z-index",很快就会发现改变索引的唯一方法是在DOM中进一步向下移动一个对象.好.它们并不容易,因为单个气泡没有ID,但是在控制台上乱搞,我们可以找到其中一个气泡对象:
$("text:contains('TimeScale')").parent()
Run Code Online (Sandbox Code Playgroud)
我们可以将它移动到包含svg元素的末尾:
.appendTo('svg')
Run Code Online (Sandbox Code Playgroud)
执行此操作后拖动它,它是最顶层的项目.到目前为止,如果你完全在DOM中工作那么好.
但是:我真正想做的是在拖动给定对象/气泡时自动发生这种情况.D3提供了一个模型dragstart()和dragend()函数,它们允许我们在拖动过程中嵌入一个语句来完成我们想要的操作.D3提供的d3.select(this)语法允许我们访问您当前正在拖动的对象/气泡的d3对象表示.但是我如何干净地将那个大型数组转换为对我可以与之交互的DOM元素的引用 - 例如 - 将其移动到svg容器的末尾,或者在DOM中执行其他引用,例如表单提交?
我想在我写的文章中提出一个距离矩阵,我正在为它寻找良好的可视化.
到目前为止,我遇到了气球图(我在这里使用它,但我不认为它会在这种情况下起作用),热图(这是一个很好的例子,但它们不允许在表中显示数字,正确我,如果我错了.也许一半的颜色和一半的数字将是很酷的)和最后的相关椭圆图(这里是一些代码和示例 - 使用一个形状很酷,但我不知道如何使用它这里).
还有各种聚类方法,但它们会聚合数据(这不是我想要的),而我想要的是呈现所有数据.
示例数据:
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
dist(nba[1:20, -1], )
Run Code Online (Sandbox Code Playgroud)
我很开心.
我有一些类似于data.frame d以下的数据.
d <- structure(list(ID = c("KP1009", "GP3040", "KP1757", "GP2243",
"KP682", "KP1789", "KP1933", "KP1662", "KP1718", "GP3339", "GP4007",
"GP3398", "GP6720", "KP808", "KP1154", "KP748", "GP4263", "GP1132",
"GP5881", "GP6291", "KP1004", "KP1998", "GP4123", "GP5930", "KP1070",
"KP905", "KP579", "KP1100", "KP587", "GP913", "GP4864", "KP1513",
"GP5979", "KP730", "KP1412", "KP615", "KP1315", "KP993", "GP1521",
"KP1034", "KP651", "GP2876", "GP4715", "GP5056", "GP555", "GP408",
"GP4217", "GP641"),
Type = c("B", "A", "B", "A", "B", "B", "B",
"B", "B", "A", "A", "A", "A", "B", "B", "B", "A", "A", "A", "A",
"B", "B", …Run Code Online (Sandbox Code Playgroud) 有没有办法在 ggplot2 中沿着密度线放置文本,或者就此而言,沿着任何路径放置文本?我的意思是一次作为标签,采用这种 xkcd 风格:1835、1950(中间面板)、1392或2234(中间面板)。或者,有没有办法让该行重复文本,例如xkcd #930?我对所有 xkcd 表示歉意,我不确定这些样式叫什么,这是我能想到的唯一一个我以前见过的以这种方式区分区域的地方。
注意:我不是在谈论手绘的 xkcd 风格,也不是在顶部放置平面标签
我知道我可以放置一段笔直/平坦的文本,例如 viaannotate或geom_text,但我很好奇弯曲此类文本,使其看起来沿着数据的曲线。
我也很好奇这种文本风格有名字吗?
ggplot2 图表示例使用annotate(...):
上面的示例图在 Inkscape 中用弯曲文本修改:
编辑:根据要求,这是 3 月和 4 月前两次试运行的数据:
df <- data.frame(
monthly_run = c('March', 'March', 'March', 'March', 'March', 'March', 'March',
'March', 'March', 'March', 'March', 'March', 'March', 'March',
'April', 'April', 'April', 'April', 'April', 'April', 'April',
'April', 'April', 'April', 'April', 'April', 'April', 'April'),
duration = …Run Code Online (Sandbox Code Playgroud) 到目前为止,我一直无法找到一个可以创建像John Stasko那样的旭日阴谋的R库.任何人都知道如何在R或Python中实现这一目标?

r ×6
ggplot2 ×4
d3.js ×2
matrix ×2
python ×2
circos ×1
dom ×1
force-layout ×1
igraph ×1
javascript ×1
matlab ×1
matplotlib ×1
svg ×1