- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题解决了!感谢大家! (本文底部的解决方案)
我喜欢使用 ggplot 创建堆叠的比例条形图。我的问题是 y 轴的中断,这似乎与每个条形图 block 的百分比值有关,但并不像预期的那样在 0 到 100 之间。
这是我的数据框:
fg grp prc
1 1 g1 85.23
2 2 g1 14.77
3 1 g2 73.33
4 2 g2 26.67
5 1 g3 85.53
6 2 g3 14.47
7 1 g4 87.18
8 2 g4 12.82
9 1 g5 72.22
10 2 g5 27.78
这就是我调用绘图函数的方式:
require(ggplot2)
ggplot(mydat, aes(x=grp, y=prc, fill=fg)) +
geom_bar(stat="identity", colour="black", show_guide=FALSE) +
scale_fill_manual(values=c("#235a80", "#80acc8")) +
labs(title=NULL, x="Cluster-Gruppen", y=NULL) +
theme(axis.line = element_line(colour="gray"),
axis.text = element_text(size=rel(1.3)),
axis.title = element_text(face="italic", size=rel(1.4)))
最后,这是我的结果:
如您所见,y 轴间隔对应于 prc 变量的百分比值。
我想要一个从 0 到 100 的 y 轴范围,每隔 10 个位置有一个中断 (seq(0,100,by=10)
)。我需要以任何方式准备我的数据吗?我如何设法“修复”y 轴?
提前致谢
这就是我计算数据和工作解决方案的方式!
clusterDiskriminanz <- function(myData, groups, gcnt) {
disc <- lda(groups ~ ., data=myData, na.action="na.omit", CV=TRUE)
ct <- table(groups, disc$class)
dg <- diag(prop.table(ct, 1))
# print barplot for correct percentage for each category of groups
newdat <- NULL
tmpdat <- NULL
filldat <- NULL
perc <- round(100*dg,2)
percrest <- round(100-perc,2)
# looks strange, but for testing purposes
# I add data this way. Perhaps I also lack
# a bit of functions which may do this better and faster
for (i in 1:gcnt) {
newdat <- rbind(newdat, c(paste("g",i,sep="")))
newdat <- rbind(newdat, c(paste("g",i,sep="")))
tmpdat <- rbind(tmpdat, perc[i])
tmpdat <- rbind(tmpdat, percrest[i])
filldat <- rbind(filldat, "1")
filldat <- rbind(filldat, "2")
}
# create data frame! prc-values are treated as numeric
# now! need to convert $g to factors though!
mydat <- data.frame(filldat, newdat, tmpdat)
names(mydat) <- c("fg", "grp", "prc")
mydat$fg <- factor(mydat$fg)
# ggplot-stuff comes here...
require(ggplot2)
ggplot(mydat, aes(x=grp, y=prc, fill=fg)) +
geom_bar(stat="identity", colour="black", show_guide=FALSE) +
scale_fill_manual(values=c("#235a80", "#80acc8")) +
labs(title=NULL, x="Cluster-Gruppen", y=NULL) +
geom_hline(yintercept=totalcorrect, linetype=2, colour="white", alpha=0.8) +
# Achsenbeschriftung etwas größer machen
theme(axis.line = element_line(colour="gray"),
axis.text = element_text(size=rel(1.3)),
axis.title = element_text(face="italic", size=rel(1.4))) +
scale_y_continuous(breaks = seq(0, 100, 10)) +
coord_cartesian(ylim=c(0,100))
}
最佳答案
您可以使用 coord_cartesian(ylim=c(0,100))
指定限制
以执行数据的视觉缩放(其中然后保持不变)。您还可以将其添加到 scale_y_continuous(limits = c(0, 100), breaks = (seq(0,100,by = 10)))
,但在比例上设置限制只会使用数据在这些限制内,因此是原始数据的子集。在您的示例中,它将返回相同的图,但它可以显着改变图(例如箱线图)。
dataset<- textConnection("fg grp prc
1 g1 85.23
2 g1 14.77
1 g2 73.33
2 g2 26.67
1 g3 85.53
2 g3 14.47
1 g4 87.18
2 g4 12.82
1 g5 72.22
2 g5 27.78")
mydat<- read.table(dataset,header=TRUE)
mydat$fg <- as.factor(mydat$fg)
ggplot(mydat, aes(x=grp, y=prc, fill=fg)) +
geom_bar(stat="identity", colour="black", show_guide=FALSE) +
scale_fill_manual(values=c("#235a80", "#80acc8")) +
labs(title=NULL, x="Cluster-Gruppen", y=NULL) +
theme(axis.line = element_line(colour="gray"),
axis.text = element_text(size=rel(1.3)),
axis.title = element_text(face="italic", size=rel(1.4))) + coord_cartesian(ylim=c(0,100))+ scale_y_continuous(breaks=(seq(0,100,by=10)))
EDIT 由于评论:
这行不通:
ggplot(mydat, aes(x=grp, y=prc, fill=fg)) +
geom_bar(stat="identity", colour="black", show_guide=FALSE) +
scale_fill_manual(values=c("#235a80", "#80acc8")) +
labs(title=NULL, x="Cluster-Gruppen", y=NULL) +
theme(axis.line = element_line(colour="gray"),
axis.text = element_text(size=rel(1.3)),
axis.title = element_text(face="italic", size=rel(1.4)))+scale_y_continuous(breaks = seq(0, 100, 10))
+coord_cartesian(ylim=c(0,100))
这样做:
ggplot(mydat, aes(x=grp, y=prc, fill=fg)) +
geom_bar(stat="identity", colour="black", show_guide=FALSE) +
scale_fill_manual(values=c("#235a80", "#80acc8")) +
labs(title=NULL, x="Cluster-Gruppen", y=NULL) +
theme(axis.line = element_line(colour="gray"),
axis.text = element_text(size=rel(1.3)),
axis.title = element_text(face="italic", size=rel(1.4)))+scale_y_continuous(breaks = seq(0, 100, 10)) +
coord_cartesian(ylim=c(0,100))
关于r - ggplot : y-axis (breaks) values from stacked proportional bar graph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14997846/
是否有效率偏好以下控制流选项之一用于循环或切换另一个? 选项 1: switch(...){ case 1: if (...) { ... } else if
我需要在某个地方修复一些 CSS,因为我的文本没有环绕,如果它是一个非常长的单词,它会无限期地继续下去。 在大多数情况下,我在我的 CSS 文件中尝试了 word-wrap: break-word;
这个问题在这里已经有了答案: What is the difference between "word-break: break-all" versus "word-wrap: break-word
我的问题: overflow-wrap: break-word 和 word-break: break-word 有区别吗? 非重复: 这里有一些现有的问题,乍一看可能是重复的,但实际上不是。 Wha
我目前想知道两者之间有什么区别。当我同时使用它们时,如果它不适合容器,它们似乎会打破这个词。但为什么 W3C 做了两种方式来做呢? 最佳答案 word-wrap: break-word 最近更改为 o
满足条件时如何跳出循环? 例如: for (i in 0..10){ if (i==3){ // equivalent of break } } 最佳答案 Q#没有中
CSS3 规范说部分支持 word-wrap:break-word; 在 Chrome 中你必须使用 word-wrap:break-all; 但是没有连字符。我正在使用 text-align:jus
我想在我的 View 列表中显示来自数据库的所有评论。但有时,评论会很长。我试图用 word-wrap:break-word 来“打破”它们,但没有结果——像这样的评论 aaaaaaaaaaaaaaa
我正在尝试将一个长 URL 放置在侧边栏中,以在表格单元格宽度的范围内中断和换行。我已将 style="word-break:break-all;" 添加到 td 和围绕文本和 URL 的 span
我有以下代码: public void post(String message) { final String mess = message; (new Thread() {
是否有 word-break: break-word 的 alternative 可以在 firefox 中使用? 在 firefox[版本 57.0] 中 在 Chrome [版本 62.0.320
在this question以及this blog ,其中提到了样式 word-break 及其值。此外,还有值 break-word 作为属于例如的东西。 自动换行类。 在最近的 VS 中 MVC
我正在尝试将文本包装在 td 中并使用以下样式 word-break:break-all 在 IE 中工作得很好,但在 Firefox 中失败,请注意这是不支持的!尝试了 http://petesbl
我正在使用“word-break: break-all”在任何字符之间插入分隔符。 但是,在 Chrome 中,它无法正常处理特定字符(例如冒号、分号、逗号),如下所示。 (我的代码笔在这里:http
它只有在我用不同的元素包裹 anchor 标记时才有效,但我正在阅读 html,所以我想将它添加为整个页面的样式。 最佳答案 我不确定你想在这里实现什么,如果你能分享一些代码片段会很好。 无论如何,我
这些看起来都是一样的,有什么区别? https://jsfiddle.net/pmuub8w1/2/ p{ word-break:normal; } p{
目前下面的代码,保持div宽度固定,换行由于break-all .Test{ float: left; margin-bottom: 2px; word-wrap:break-word; word-b
我正在使用 word-break: break-all; 并想知道如何让浏览器自动插入 hyphens ,如 MDN example 中所示. div { width: 80px; heigh
我的 html 有这种结构: content1 content2 content3 content4 content5 content6 co
我正在尝试对齐图像旁边的文本。我想考虑没有空格的长字符串。 我的css如下 .new_item { width: 100%; float: left; border-bottom: 1px solid
我是一名优秀的程序员,十分优秀!