2017-02-07 2 views
1

사용자 정의 단축키를 사용하여 반짝이는 앱을 만들고 있습니다 (예 : 누군가가 s을 누르면 일부 데이터가 전송됩니다). 이를 위해 R에서 키보드 레이아웃의 "플롯"을 만들어 단축키 기능에 매핑하고 앱에 표시하는 것이 매우 유용하다는 것을 알았습니다. 나는 이런 식으로 뭔가를하고 싶은플롯 키보드 레이아웃 R

actions <- c("back", "next", "update", "submit") 
keys <- c(",", ".", "u", "s") 
keycode <- c(188,190,85,83) 
data.frame(actions, keys, keycode) 

# actions keys keycode 
# back  ,  188 
# next  .  190 
# update u  85 
# submit s  83 

:

몇 가지 더미 바로 가기입니다

enter image description here

그러나 나는 모든 키 내부에 표시 할 항목을 선택합니다. 유일한 원격 similar question 찾을 수있는 매우 도움이되지 않습니다. 이것이지도로 그려 질 수 있는지 궁금합니다. 어쩌면?

+2

아마도 당신은 단순히 그 png 이미지를 플로팅 한 다음 위에 여분의 레이블을 그려 보는 것이 가장 좋습니다. 또한 다른 사용자가 다른 키보드 배열을 가지고 있음을 인식해야합니다. – Axeman

답변

5

매우 순진한 접근법은 예를 들어 geom_rect()을 사용하여 키보드를 그리는 것입니다. 첫 번째 단계는 각 행을 만드는 것입니다. 실제로는 쉽게 잃어 버리지 않기 때문에 별도로 수행했습니다. 키를 다른 값으로 변경하는 것은 각 데이터 프레임 내부에서 쉽게 찾을 수 있기 때문에 매우 간단합니다.

library(ggplot2) 
#1st line from top 
df1=data.frame(xmin=c(0,1,2,3,4,5,6,7,8,9,10,11,12,13), 
       xmax=c(1,2,3,4,5,6,7,8,9,10,11,12,13,15), 
       ymin=rep(4,14), 
       ymax=rep(5,14), 
       value=c("'","1","2","3","4","5","6","7","8","9","0","-","=","backspace")) 
#2nd line from top 
df2=data.frame(xmin=c(0,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5), 
       xmax=c(1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,13.5,15), 
       ymin=rep(3,14), 
       ymax=rep(4,14), 
       value=c("tab","Q","W","E","R","T","Y","U","I","O","P","[","]","enter")) 
#3rd line from top 
df3=data.frame(xmin=c(0,1.75,2.75,3.75,4.75,5.75,6.75,7.75,8.75,9.75,10.75,11.75,12.75,13.75), 
       xmax=c(1.75,2.75,3.75,4.75,5.75,6.75,7.75,8.75,9.75,10.75,11.75,12.75,13.75,15), 
       ymin=rep(2,14), 
       ymax=rep(3,14), 
       value=c("caps","A","S","D","F","G","H","J","K","L",":","@","~","enter")) 
#4th line from top 
df4=data.frame(xmin=c(0,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5), 
       xmax=c(1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5,15), 
       ymin=rep(1,13), 
       ymax=rep(2,13), 
       value=c("shiftr","|","Z","X","C","V","B","N","M","<",">","?","shiftr")) 
#5th line from top 
df5=data.frame(xmin=c(0,1.5,2.5,4,10,11.5,12.5,13.5), 
       xmax=c(1.5,2.5,4,10,11.5,12.5,13.5,15), 
       ymin=rep(0,8), 
       ymax=rep(1,8), 
       value=c("ctrll","winl","altl","space","altgr","winr","menu","ctrlr")) 

#putting it together 
df=rbind(df1,df2,df3,df4,df5) 

ggplot(df,aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax))+ 
    geom_rect(colour="black")+geom_text(aes(x=(xmin+xmax)/2,y=(ymin+ymax)/2,label=value))+ 
    theme_void() 

enter image description here

참고 :이 훨씬 완벽한으로부터 ("Enter"키가 2로 분할됩니다)하지만 당신에게 어떤 아이디어 나 작업 할 수있는 기반을 제공 할 수도 있습니다.