我试图用不同的纺织品而不是颜色填充条形图中的条形图.
我知道如何用不同的线条填充条形,如下所示:
aaa <- c(1,2,3,4)
barplot(aaa, density = c(4,4,4,4), angle = c(45, 90, 180, -45))
Run Code Online (Sandbox Code Playgroud)
这会给我这样的事情:
___
4| |\\\|
| ___ |\\\|
3| |___| |\\\|
| |___| |\\\|
2| ___ |___| |\\\|
| ||||| |___| |\\\|
1|___ ||||| |___| |\\\|
|///| ||||| |___| |\\\|
0|///|__|||||__|___|__|\\\|_
1 2 3 4
Run Code Online (Sandbox Code Playgroud)
我不知道如何使用其他类型的填充(例如*,正方形,彩色圆点,三角形等形状).或者,如果这实际上可以完成.
目前,我正在使用igraph库,我不太确定是否有任何其他包可以允许我使用其他类型的填充.
有什么建议?
plotrix
包提供rectFill
和barp
功能,允许用自定义形状填充条.
barp
生成条形图并调用rectFill
以填充符号.可以使用默认pch
参数(参考图表)或通过自定义字符串指定符号,请参阅下面的示例.
# install the package
install.packages('plotrix')
# examples with varying pch parameters
require(plotrix)
a <- 1:4
barp(t(a), pch=t(1:4))
barp(t(a), pch=t(c("*","$","~","@")))
Run Code Online (Sandbox Code Playgroud)
不幸的barp
是不是很灵活:
必须以矩阵格式提供数据以指定变化的符号.矩阵的列应与pch参数的顺序相对应.因此需要t()
在当前的例子中.
一旦pch
指定,情节变成黑白.rectFill
函数允许通过控制符号的颜色pch.col
,但barp
不允许此选项.为了解决这个问题,我将省略号(...
)添加到barp
源代码中,以便能够将更多参数传递给rectFill
函数.修改后的代码(barp2
)可在此处获得.
使用修改代码的示例:
# load the barp2 function
require(devtools)
source_gist("https://gist.github.com/tleja/8592929")
# run the barp2 function
require(plotrix)
a <- 1:4
barp2(t(a), pch=t(1:4), pch.col=1:4)
Run Code Online (Sandbox Code Playgroud)
编辑:似乎最新版本的软件包可能有一个错误,因为一些用户在重现这些情节时遇到了麻烦.如果发生这种情况,请尝试plotrix
使用以下代码安装早期版本:
require(devtools)
install_url("http://cran.r-project.org/src/contrib/Archive/plotrix/plotrix_3.5-2.tar.gz")
Run Code Online (Sandbox Code Playgroud)
我确信可以调整类似下面的内容:
aaa <- c(1,2,3,4)
bp <- barplot(aaa,col="white")
fillbars <- function(height,bp,bg,size,spacing) {
coords <- data.frame(bp-0.5,bp+0.5,0,height)
invisible(
apply(
coords,
1,
function(d) {
do.call(clip,unname(as.list(d)))
x <- seq(d[1],d[2],by=spacing)
y <- seq(d[3],d[4],by=spacing)
xy <- expand.grid(x,y)
symbols(
xy,
circles=rep(size,nrow(xy)),
inches=FALSE,
bg=bg,
add=TRUE
)
}
)
)
}
fillbars(height=aaa,bp=bp,bg="red",size=0.06,spacing=0.3)
Run Code Online (Sandbox Code Playgroud)
结果: