- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用包 dendexend 创建一个树状图。它创建了非常好的 gg 树状图,但不幸的是,当你把它变成一个“圆圈”时,标签跟不上。我将在下面提供一个示例。
我的距离对象在这里:http://speedy.sh/JRVBS/mydist.RDS
library(dendextend)
library(ggplot2)
#library(devtools) ; install_github('kassambara/factoextra')
library(factoextra)
clus <- hcut(mydist, k = 6, hc_func = 'hclust',
hc_method = 'ward.D2', graph = FALSE, isdiss = TRUE)
dend <- as.dendrogram(clus)
labels(dend) <- paste0(paste0(rep(' ', 3), collapse = ''), labels(dend))
dend <- sort(dend, decreasing = FALSE)
ggd1 <- ggplot(dend %>%
set('branches_k_color', k = 6) %>%
set('branches_lwd', 0.6) %>%
set('labels_colors', k = 6) %>%
set('labels_cex', 0.6),
theme = theme_minimal(),
horiz = TRUE)
ggd1 <- ggd1 + theme(panel.grid.major = element_blank(),
axis.text = element_blank(),
axis.title = element_blank())
ggd1 <- ggd1 + ylim(max(get_branches_heights(dend)), -3)
ggd1 + coord_polar(theta = 'x')
geom_segment()
Và
geom_text()
在它们上创建树状图和标签。我相信我可以公开相关的 data.frame 如下:
back.df1 <- dendextend::as.ggdend(dend)
back.df2 <- dendextend::prepare.ggdend(back.df1)
ggplot(labels = FALSE...)
绘图时,然后添加
geom_text()
以某种方式手动保留着色但允许我使用
geom_text(angle = )
.
back.df2
并再次创建第一个和第二个图,但也要控制标签的角度。但是,我不知道如何做到这一点,并且已经使用 dendextend 包构建了很多东西,并且理想情况下希望避免使用任何新包来创建树状图对象,因为我真的很喜欢标签之外的这个!
ggplot.ggdend()
的编辑版本.这与以下答案中提供的相同。我接下来创建了一个函数来自动创建角度和 hjust 向量,以便标签旋转从 6 点钟切换到 12 点钟以提高可读性。
createAngleHJustCols <- function(labeldf) {
nn <- length(labeldf$y)
halfn <- floor(nn/2)
firsthalf <- rev(90 + seq(0,360, length.out = nn))
secondhalf <- rev(-90 + seq(0,360, length.out = nn))
angle <- numeric(nn)
angle[1:halfn] <- firsthalf[1:halfn]
angle[(halfn+1):nn] <- secondhalf[(halfn+1):nn]
hjust <- numeric(nn)
hjust[1:halfn] <- 0
hjust[(halfn+1):nn] <- 1
return(list(angle = angle, hjust = hjust))
}
gdend <- dendextend::as.ggdend(dend %>%
set('branches_k_color', k = 6) %>%
set('branches_lwd', 0.6) %>%
set('labels_colors', k = 6) %>%
set('labels_cex', 0.6))
gdend$labels$angle <- ifelse(horiz, 0, 90)
gdend$labels$hjust <- 0
gdend$labels$vjust <- 0.5
# if polar, change the angle and hjust so that the labels rotate
if(polarplot) {
newvalues <- createAngleHJustCols(gdend$labels)
gdend$labels$angle <- newvalues[['angle']]
gdend$labels$hjust <- newvalues[['hjust']]
}
ggresult <- newggplot.ggdend(gdend, horiz = TRUE, offset_labels = -2)
ggresult <- ggresult + ggtitle(plottitle)
ggresult <- ggresult + theme(plot.margin = margin(c(2,2,2,2),
axis.text = element_blank(),
plot.title = element_text(margin = margin(10,2,2,2)))
ggresult <- ggresult + ylim(max(get_branches_heights(dend)), -5)
ggresult <- ggresult + coord_polar(theta = 'x', direction = 1)
1 Câu trả lời
这是可能的,但您需要编辑 dendextend:::ggplot.ggdend
首先让它接受angle
美学(还有 hjust
Và vjust
)
第一步:编辑dendextend:::ggplot.ggdend
newggplot.ggdend <- function (data, segments = TRUE, labels = TRUE, nodes = TRUE,
horiz = FALSE, theme = theme_dendro(), offset_labels = 0, ...) {
data <- prepare.ggdend(data)
#angle <- ifelse(horiz, 0, 90)
#hjust <- ifelse(horiz, 0, 1)
p <- ggplot()
if (segments) {
p <- p + geom_segment(data = data$segments, aes_string(x = "x", y = "y", xend = "xend", yend = "yend", colour = "col", linetype = "lty", size = "lwd"), lineend = "square") +
guides(linetype = FALSE, col = FALSE) + scale_colour_identity() +
scale_size_identity() + scale_linetype_identity()
}
if (nodes) {
p <- p + geom_point(data = data$nodes, aes_string(x = "x", y = "y", colour = "col", shape = "pch", size = "cex")) +
guides(shape = FALSE, col = FALSE, size = FALSE) +
scale_shape_identity()
}
if (labels) {
data$labels$cex <- 5 * data$labels$cex
data$labels$y <- data$labels$y + offset_labels
p <- p + geom_text(data = data$labels, aes_string(x = "x", y = "y", label = "label", colour = "col", size = "cex", angle = "angle", hjust = "hjust", vjust = "vjust"))#edited
}
if (horiz) {
p <- p + coord_flip() + scale_y_reverse(expand = c(0.2, 0))
}
if (!is.null(theme)) {
p <- p + theme
}
P
}
assignInNamespace(x = "ggplot.ggdend", ns = "dendextend", value = newggplot.ggdend)
gdend <- dendextend::as.ggdend(dend %>%
set('branches_k_color', k = 6) %>%
set('branches_lwd', 0.6) %>%
set('labels_colors', k = 6) %>%
set('labels_cex', 0.6),
theme = theme_minimal(),
horiz = TRUE)
gdend$labels$angle <- seq(90, -270, length = nrow(gdend$labels))
gdend$labels$vjust <- cos(gdend$labels$angle * pi) / (180)
gdend$labels$hjust <- sin(gdend$labels$angle * pi) / (180)
ggd1 <- ggplot(gdend)
ggd1 <- ggd1 + theme(panel.grid.major = element_blank(),
axis.text = element_blank(),
axis.title = element_blank())
ggd1 <- ggd1 + ylim(max(get_branches_heights(dend)), -3)
ggd1
ggd1 + coord_polar(theta = 'x')
关于旋转 ggplot 树状图的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38034663/
Tôi muốn tô một biểu đồ đường đồng mức 3D (contour3(X,Y,Z)) giống như một biểu đồ đường đồng mức 2D (contourf(X,Y,Z)). Nhưng tôi không biết làm thế nào để đạt được điều này. Sự kết hợp của contour3 và surf không phải là
Tôi có biểu đồ đường c3.js thể hiện sự tiến triển của 2 giá trị. Tôi cần chú giải công cụ cho biểu đồ đường giống với biểu đồ hình tròn (chú giải công cụ = đồ họa c3.js khác). Đây là bản fiddle thành công của tôi: http://jsfiddle.net/owhxgaqm/
Tôi có một khung dữ liệu Pandas với cấu trúc: AB 0 1 1 1 2 1 2 3 4 3 3 7 4 6 8 Làm thế nào tôi có thể tạo một biểu đồ Seaborn Violin với mỗi cột là một cột riêng biệt?
Tôi đang sử dụng phương pháp D3DXSPRITE để vẽ các ô bản đồ của mình lên màn hình, tôi vừa thêm tính năng thu phóng sẽ phóng to khi bạn giữ phím mũi tên lên, nhưng nhận thấy bây giờ bạn có thể thấy khoảng cách giữa các ô, đây là một số ảnh chụp màn hình
Hôm nay chúng ta bắt đầu học sơ đồ cấu trúc dữ liệu khó và phức tạp nhất mà chúng ta từng học. Chúng ta hãy cùng xem lại sơ qua các cấu trúc dữ liệu mà chúng ta đã học trước đó. Các phần tử dữ liệu trong danh sách tuyến tính như mảng, danh sách liên kết đơn và hàng đợi là một-một, trong khi các phần tử dữ liệu trong cấu trúc cây là một-nhiều và các phần tử dữ liệu trong cấu trúc đồ thị là nhiều-nhiều.
1. Môi trường hệ thống như hình dưới đây: 2. Thêm ổ cứng ảo mới vào hệ thống. Sau khi thêm, bạn cần khởi động lại máy ảo, nếu không hệ thống sẽ không nhận ra; như hình dưới đây, /dev/sdc là ổ cứng mới được thêm vào; 3. fdisk /dev/sdc tạo phân vùng cho ổ cứng mới:
1. Giới thiệu về Nagios Nagios là một hệ thống máy tính mã nguồn mở và công cụ giám sát mạng có thể giám sát hiệu quả trạng thái máy chủ Windows, Linux và Unix, các thiết lập mạng như bộ chuyển mạch và bộ định tuyến, máy in, v.v. Khi trạng thái hệ thống hoặc dịch vụ bất thường
Ngày càng có nhiều người quen với việc sử dụng điện thoại di động để lướt Internet, duyệt trang web, kiểm tra email... việc di chuyển đã trở thành xu hướng tất yếu trong quá trình phát triển của Internet. Nhiều công ty Internet, bao gồm cả Facebook, đã coi quảng cáo trên thiết bị di động là mỏ vàng tiếp theo.
1. Xử lý hình ảnh 1. Sao chép mã hình ảnh góc bo tròn Mã như sau: /** * Chuyển đổi thành góc bo tròn * &n
Microsoft SQL Server Management Studio là một công cụ máy khách dành cho SQL SERVER, tôi tin là mọi người đều biết đến nó. Tôi không biết mọi người sử dụng chức năng nhập dữ liệu như thế nào, nhưng gần đây tôi đã gặp phải vấn đề này. Chủ yếu là vì không có
Hệ thống Debian6: Đầu tiên cài đặt mysql: Mở terminal (người dùng root) và đăng nhập apt-get purge mysql-server-5.5 Sau khi cài đặt hoàn tất: Theo mặc định, Mysql chỉ cho phép đăng nhập cục bộ
Cách hỗ trợ phương thức nhập tiếng Trung trong môi trường tiếng Anh của fedora16: Fedora16 hỗ trợ phương thức nhập tiếng Trung của FCITX trong môi trường tiếng Anh: $ im-chooser và giao diện lựa chọn sẽ hiện ra, chỉ cần chọn giao diện thứ hai.
Lệnh biên dịch trước Net C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -? Màn hình hiển thị lệnh chúng ta cần chọn là &n
Đôi khi máy tính có một số vấn đề và đôi khi vấn đề có thể được giải quyết bằng cách sửa đổi cài đặt BIOS. Vậy, máy tính có thể được khôi phục về cài đặt gốc bằng cách đặt nó trong BIOS không? Thực tế là có thể. Phương pháp này cũng rất đơn giản, chỉ cần bạn có thể vào BIOS của máy tính và hiểu được ý nghĩa của tiếng anh ở trên
Tác giả đã giới thiệu rằng Deepin sẽ hỗ trợ Loongson hoàn toàn và tạo ra màn hình máy tính Loongson đẹp nhất. Hiện tại, nhóm Deepin đã đạt được bước đột phá trong công việc chuyển đổi và máy tính để bàn Deepin đã chạy thành công trên máy tính Loongson 3A và Loongson 3B. Sau đây là Loongson 3
Sau khi cài đặt một số phần mềm, máy tính của chúng ta luôn có một số thay đổi nhỏ. Hoặc là một vài biểu tượng URL sẽ xuất hiện trên màn hình nền, hoặc trang chủ mặc định của trình duyệt IE sẽ bị thay đổi thành một URL lộn xộn. Điều khó chịu nhất là sau khi thay đổi lại trang chủ mặc định trong cài đặt IE, nó lại chuyển về trang chủ mặc định khi tôi khởi động Win7 lần tiếp theo.
Mặc dù "Cách mở Registry Editor" không phải là câu hỏi khó nhưng vẫn là vấn đề đau đầu đối với những cư dân mạng không rành về kiến thức máy tính khi máy tính gặp sự cố hoặc cần thay đổi cài đặt. Bởi vì bạn cần phải mở sổ đăng ký để giải quyết vấn đề. Vậy làm thế nào để mở Registry Editor?
Bài viết này tập trung vào 10 plugin bảo mật WordPress quan trọng và các mẹo để bảo vệ trang web hoặc blog WordPress của bạn. 1. WP Security sẽ giúp bạn sửa lỗi trang web bị hack theo cách thủ công. Chỉ cần theo số liên lạc trên trang web của họ.
Trên thực tế, việc sử dụng đối tượng và javascript để gọi các tệp bên ngoài cũng có thể đạt được các cột khác nhau gọi các liên kết thân thiện khác nhau, tương đương với việc gọi các tệp liên kết thân thiện với cột khác nhau, {dede:field.typeid} để lấy ID của cột hiện tại.
Tôi có một ma trận có giá trị phức tạp. Nếu tôi đưa ra lệnh: plot(myMatrix) thì nó sẽ hiển thị một dạng biểu đồ phân tán trên thiết bị đồ họa với trục X được gắn nhãn Re(myMatrix) và trục Y được gắn nhãn Im(myMatrix). Điều này cho thấy những gì tôi đang tìm kiếm
Tôi là một lập trình viên xuất sắc, rất giỏi!