示例数据集:
function runAfterAjaxDone(serverResponse) {
console.log(serverResponse);
// Do what you need with
}
function videomatter()
{
var xm = new XMLHttpRequest();
xm.onreadystatechange = function() {
if (xm.readyState == 4 && xm.status == 200) {
// document.writeln("hello1");
var a = xm.responseText;
// JSON.stringify(a);
var myObj = JSON.parse(a);
//document.writeln(myObj.co001);
var c = listmake(myObj);
runAfterAjaxDone(c);
document.writeln(c); //getting correct output
return c;
}
}
xm.open("GET","GetVideoNameServlet?t=<%=sss%>",false);
xm.send();
}
以下代码:
n value
100000 20
200000 30
300000 25
400000 40
500000 12
将产生以下输出:
但是,我想得到以下输出:
答案 0 :(得分:3)
根据@Roland的建议,您可以使用geom_text
或geom_label
或annotate
向地块添加文字。以下是使用geom_text
的代码:
data <- structure(list(n = c(100000L, 200000L, 300000L, 400000L, 500000L
), value = c(20L, 30L, 25L, 40L, 12L)), .Names = c("n", "value"
), class = "data.frame", row.names = c(NA, -5L))
library(ggplot2)
ggplot(data, aes(x=n, y=value)) +
geom_point(aes(n,value)) + geom_line(aes(n,value))+
geom_text(aes(label=value), hjust=c(-1,0,0,-1,2), vjust=c(1,-.5,1.5,0,0))
hjust
控制水平对齐,vjust
控制垂直对齐。详情见link。使用geom_label
ggplot(data, aes(x=n, y=value)) +
geom_point(aes(n,value)) + geom_line(aes(n,value))+
geom_label(aes(label=value), hjust=c(-1,0,0,-1,2), vjust=c(1,-.5,1.5,0,0))
结果是:
也可以使用annotate
,如下所示:
ggplot(data, aes(x=n, y=value)) +
geom_point(aes(n,value)) + geom_line(aes(n,value))+
annotate("text", x=data$n, y=data$value, label=data$value,
hjust=c(-1,0,0,-1,2), vjust=c(1,-.5,1.5,0,0))
答案 1 :(得分:3)
另一个选项是library(ggrepel)
,以自动最小化点/标签重叠。我认为它比position_jitter()
更可靠,如果你不能/不想对你所有的躲闪值进行硬编码,那就很有用了:
ggplot(data, aes(n, value)) +
geom_point() +
geom_line() +
# geom_text(aes(label = value), position = "jitter")
geom_text_repel(aes(label = value),
point.padding = unit(.25, "lines"))
geom_label_repel()
也可用,并且有很多选项来设置&#34;闪避&#34;区域大小。
答案 2 :(得分:1)
如果您在data
的调用中指定ggplot
参数,则以下geom_point调用等将继承它,因此您无需再次指定它。使用dplyr管道符号(%&gt;%)和geom_text
结果将是:
library(dplyr)
library(ggplot2)
tribble(
~n, ~value,
100000, 20,
200000, 30,
300000, 25,
400000, 40,
500000, 12
) %>% ggplot(aes(n, value)) +
geom_point() +
geom_line() +
geom_text(aes(label=value), nudge_y=1, nudge_x=-10000)
这与调用
基本相同ggplot(data, aes(n, value)) +
geom_point() +
geom_line() +
geom_text(aes(label=value), nudge_y=1, nudge_x=-10000)