小编San*_*att的帖子

你如何使用directlabels和ggplot2?

我正在尝试使用directlabels包来标记我在一个简单的图中的两条线(我正在使用ggplot2)

在此输入图像描述

我的代码如下:

# libraries
library(ggplot2)
library(directlabels)

# Variables
A = array(1000,100)
F = seq(length=100, from=0, by=10)
f = array(5,100)

# make data frame 1
df <- data.frame(X = F * f/A, Y = F/A)

# plot line 1
p = ggplot(df, aes(x=X,y=Y)) 
p = p + geom_line(colour="#56B4E9") 

# make data frame 2
df1 <- data.frame(X = F * f * 2/A, Y = F/A)

# plot line 2
p =  p + geom_line(aes(x=X,y=Y), data=df1, colour="#56B4E9")    

# …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 direct-labels

7
推荐指数
1
解决办法
8792
查看次数

在ggplot和ggmap中保存图像

我使用ggsave函数保存了一个图像,如下所示 在此输入图像描述

但我希望有这样的输出 在此输入图像描述

       al1 <- get_map(location = c(lon = -86.304474, lat = 32.362563), zoom = 11, maptype = 'terrain')

      lon<--86.304474
      lat<-32.362563
      df<-data.frame(lon,lat)
      a+ggplot(df)
      ggmap(al1)+geom_point(data=df,aes(x=lon,y=lat),size=2)
Run Code Online (Sandbox Code Playgroud)

我试图删除x和y轴值但问题是图像在面板上有白色背景但我只想要绘图图像.

r ggplot2 ggmap

6
推荐指数
1
解决办法
2291
查看次数

通过x轴扩大绘图区域,为直接标签腾出空间

我正在磨光图形,在绘图区域安装直接标签时遇到问题。想要删除y1图中左侧和y轴之间大部分区域,类似于下面的代码生成的区域,但是要保留右侧的额外区域以为标签留出空间。

添加+scale_x_discrete(expand=c(0,0.05))会删除两侧的多余区域,但不会留出标签空间,并且似乎无法仅在一侧将其删除。

在绘图区域的右边加上边距+theme(plot.margin = unit(c(0,4,0,0), "cm"))仍然不允许标签在那里出现。

将标签放置在边框右侧的外部的解决方案会更好。

任何帮助,不胜感激。

library(ggplot2)
library(directlabels)
library(reshape2)
theme_set(theme_bw())
# some data
dfr<-data.frame(c("Longish Name A","Longish Name B","Longish Name C"),c(1,1,1),c(1,2,3),c(2,3,4)) 
colnames(dfr) <- c("subject","y1","y2","y3")
dfr<-melt(dfr, id.vars="subject")
# the graph
ggplot(data=dfr,aes(y=value, x=variable, group=subject)) +
geom_line(aes(color=subject))+
geom_dl(aes(label=subject), list(dl.trans(x=x+0.2), "last.qp", cex=0.5)) +
guides(color=FALSE)
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 axis-labels direct-labels

6
推荐指数
1
解决办法
3192
查看次数

如何将图例高度设置为与绘图区域的高度相同?

我已经安排了两个图:顶部的折线图和下面的热图.

我希望热图图例的高度与热图的绘图区域相同,即与y轴的长度相同.我知道我可以使用改变图例的高度和大小theme(legend.key.height = unit(...)),但在找到适当的设置之前,这将需要许多试验和错误.

有没有办法指定图例的高度,使其与热图的绘图区域的高度完全相同,并在绘制为pdf时保留该比率?

我可以尝试使用代码重现的示例:

#Create some test data
pp <- function (n, r = 4) {
  x <- seq(1:100)
  df <- expand.grid(x = x, y = 1:10)
  df$z <- df$x*df$y
  df
}
testD <- pp(20)
#Define groups
colbreaks <- seq(min(testD[ , 3]), max(testD[ , 3] + 1), length = 5)
library(Hmisc)
testD$group <- cut2(testD[ , 3], cuts = c(colbreaks))
detach(package:Hmisc, unload = TRUE)

#Create data for the top plot
testD_agg <- aggregate(.~ x, data=testD[ , c(1, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gtable

6
推荐指数
1
解决办法
1128
查看次数

如何进行X [Y] data.table连接,而不会丢失X上的现有主键?

当使用X [Y]连接data.tables X和Y时,X必须有一个键,Y的键用来进行连接.如果X是一个非常大的表并且通常键入未在连接中使用的列,则需要为连接更改X的键,然后在连接后恢复为原始键.有没有一种有效的方法来进行连接,而不会丢失X上的原始主键?

我有一个大的时间序列环境数据集DT(1M行,36列),作为data.table,在站点和日期列上有键.我需要对DT中的现有列进行计算和/或使用小型查找或重新编码表基于现有列插入新列.

这是一个最小的例子:

require(data.table)   # using v1.9.5

# main data table DT, keyed on site and date, with data column x
DT <- data.table(site = rep(LETTERS[1:2], each=3),
                 date = rep(1:3, times=2),
                 x = rep(1:3*10, times=2),
                 key = "site,date")
DT
#    site date  x
# 1:    A    1 10
# 2:    A    2 20
# 3:    A    3 30
# 4:    B    1 10
# 5:    B    2 20
# 6:    B    3 30

# lookup table for x …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
2
解决办法
845
查看次数

如果连接丢失,Android将重新连接到蓝牙设备

我的手机正在连接蓝牙设备,工作正常.它连接并且连接成立.我可以更改方向,在后台安装我的应用程序,我可以关闭应用程序,当我将其重新打开时,它将自动连接.但是从应用程序用户那里我得到一些报告说连接在一段时间后丢失(没有检测到模式).我试图重新创建这个,但没有运气.因此,为了避免此问题,我想在连接丢失时实现自动重新连接到之前选择的设备.

我做了一些研究,可以通过实现一个可以检测到的广播接收器来完成: android.bluetooth.device.action.ACL_DISCONNECTED

我的问题是:

  • 我已经有一个在设备启动时触发的广播接收器.我是否应该扩展此接收器以添加ACL_DISCONNECTED或添加单独的接收器?
  • 我的BluetoothService初始化我的mainactivity,但我需要重新连接intent.怎么做.

感谢您的回答.

蓝牙服务代码:

public class BluetoothService
{
    // Debugging
    private static final String TAG = "BluetoothService";    
    private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

// Member fields
private final BluetoothAdapter mAdapter;
private final Handler mHandler;
private final Context mContext;
private ConnectThread mConnectThread;
private ConnectedThread mConnectedThread;    
private int mState;

// Constants that indicate the current connection state
public static final int STATE_NONE = 0;       // we're doing nothing
public static final int STATE_CONNECTING = 1; // now …
Run Code Online (Sandbox Code Playgroud)

java android bluetooth android-broadcast android-bluetooth

6
推荐指数
1
解决办法
9266
查看次数

在一个ggplot()内生成多个ggplot数字

我想使用相同的ggplot代码生成8个不同的数字,条件是我的数据框中的数字.通常我会使用facet_grid,但在这种情况下,我想得到每个人的数字的pdf.例如,我想在这里每行一个pdf:

df <- read.table(text = "
xvalue     yvalue    location    planting    crop
  1          5          A          early      corn
  2          3          A          late       corn
  6          2          A          early      soy
  7          4          A          late       soy
  4          7          S          early      corn
  2          6          S          late       corn
  3          2          S          early      soy
  5          1          S          late       soy
", sep = "", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

基本ggplot:

library(ggplot2)

ggplot()+
  geom_point(aes(x=xvalue, y=yvalue), data=df)
Run Code Online (Sandbox Code Playgroud)

但是不是facet_grid为了获得x种植x作物组合的位置,我想要一个单独的pdf.

r ggplot2

6
推荐指数
1
解决办法
450
查看次数

ggplot2:手动添加图例

如何将任何(不相关的)图例映射到现有的ggplot?

免责声明:请不要恨我.我知道使用'ggplot2'创建图例的最佳方法是正确地映射您的数据,我99%的时间都这样做.然而,我要求的东西通常可以给我任何我想要的传奇.

作为一个例子,我有一个看起来像这样的情节: 在此输入图像描述

从这段代码创建:

set.seed(42)
temp1 = cbind.data.frame(begin = rnorm(10, 0, 1), end = rnorm(10, 2, 1), y1 = 1:10, y2 = 1:10, id = as.character(1:10))
temp2 = cbind.data.frame(x = 0:2, y = 1:3*2)
temp3 = cbind.data.frame(x = seq(0.5, 1.5, 0.33))
temp = c()
plot1 = ggplot(data = temp, aes(x = x)) + 
  geom_vline(data = temp3, aes(xintercept = x), color = "red", linetype = "longdash") + 
  geom_segment(data = temp1, aes(y = y1, yend = y2, x = begin, …
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

6
推荐指数
1
解决办法
1579
查看次数

ggplot减少图例中的线宽

我正在尝试使用ggplot2控制图

示例脚本:

dat1 <- data.frame(
     sex = factor(c("Female","Female","Male","Male")),
     time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")),
     total_bill = c(13.53, 16.81, 16.24, 17.42)
)
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) + geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)

现在,我要控制形状和线条在图例中的外观。我想要更大的形状,并且传奇中的细线。但是我不能同时执行两者。

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5)))
Run Code Online (Sandbox Code Playgroud)

线条和形状都较粗,类似于图B。

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0)))
Run Code Online (Sandbox Code Playgroud)

然后形状以正确的大小出现,但线条消失(图A)。我尝试了类似的尝试,但未成功。

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0.5)))
Run Code Online (Sandbox Code Playgroud)

例

如何在图例中实现大形状和细线?

r legend ggplot2

6
推荐指数
1
解决办法
1501
查看次数

如何在R中手动更改ggplot2图例的文本颜色?

可能有一种简单的方法来执行此操作,但是我不确定它是什么。我正在尝试使图例中的文本与其旁边的颜色框匹配。我已经尝试了一段时间,但没有找到使用element_text函数向图例添加多种颜色的方法。我使每个标签都具有相同的颜色没有问题,但是有没有办法使每个图例标签具有不同的颜色?

在此处输入图片说明

data<-data.frame(count=c(39,36,19,6), category=c("a","b","c","d"))
data$fraction = data$count / sum(data$count)
data = data[order(data$fraction), ]
data$ymax = cumsum(data$fraction)
data$ymin = c(0, head(data$ymax, n=-1))

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Create Plot
fill <- c("blue3","cyan3","darkgrey","forestgreen")

library(ggplot2)

p1 = ggplot(data, aes(fill=category, ymax=ymax, ymin=ymin, xmax=4, xmin=3.5)) +  
 geom_rect(colour="White") +
 coord_polar(theta="y") +
 scale_fill_manual(values=fill)+
 theme_bw()+
 geom_label(aes(label=paste(data$fraction*100,"%"),x=4,y=
 (ymin+ymax)/2),inherit.aes = F)+
 theme(panel.grid=element_blank())+
 theme(axis.ticks=element_blank()) +     
 xlim(c(0, 4)) +
 theme(axis.text=element_blank()) +
 theme(legend.text=element_text(color=fill,size=12))+
 theme(legend.key.size=unit(2,'lines'))+
 theme(legend.key=element_rect(size=5))+
 labs(title="donut plot")


 print(p1)
Run Code Online (Sandbox Code Playgroud)

r legend ggplot2

6
推荐指数
2
解决办法
2852
查看次数