2012-12-11 96 views
2

我正試圖在ggplot2中創建一個圖。下面是數據,命名problem_accept_df:ggplot2 y值的間距

Order Application probscore 
1 Integrated 0.8333333 
1  Tabbed 0.7777778 
2 Integrated 0.8965517 
2  Tabbed 0.7777778 
3 Integrated 0.7931034 
3  Tabbed 0.7777778 
4 Integrated  0.7 
4  Tabbed 0.6538462 
5 Integrated 0.9285714 
5  Tabbed 0.8333333 
6 Integrated 0.9310345 
6  Tabbed 0.8148148 
7 Integrated 0.8571429 
7  Tabbed 0.8518519 
8 Integrated 0.9333333 
8  Tabbed 0.6923077 
9 Integrated 0.9310345 
9  Tabbed 0.8461538 
10 Integrated 0.9285714 
10  Tabbed  0.8 

,這裏是創建情節代碼:

ggplot(problem_accept_df, aes(x=Order, y=probscore, color=Application, 
group=Application)) + 
xlab('Order') + 
ylab('Problem scores') + 
geom_line(position=pd, size=2) + 
geom_point(position=pd, size=4) + 
labs(title='Acceptable proportion of problem scores') 

該地塊創建的,而是顯示在y值等間隔的刻度標記,即使這些值不是等分的。該圖還顯示每個單獨的y值而不是範圍。我試圖改變(scale_y_continuous(breaks=seq(0.5, 1, 0.1))),但我收到錯誤消息Error: Discrete value supplied to continuous scale,所以問題必須更基本。我很感激任何關於做什麼的建議。

回答

0

這通常發生在如果數據(在您的案例probscore)是一個因素,而不是一個連續變量。

> d <- data.frame(x=c(0,1), y=factor(c(0.5, 1.5))) 
> d 
    x y 
1 0 0.5 
2 1 1.5 
> levels(d$x) 
NULL 
> levels(d$y) 
[1] "0.5" "1.5" 
> library(ggplot2) 
> ggplot(d, aes(x=x, y=y)) + geom_point() + scale_y_continuous() 
Error: Discrete value supplied to continuous scale 
> ggplot(d, aes(x=x, y=as.numeric(as.character(y)))) + geom_point() + scale_y_continuous() 
+0

謝謝 - 它修復了間距,但現在它錯誤地繪製了值。我猜,更好地堅持qplot。 – user1895691

+0

@ user1895691:你說的「不正確」是什麼意思? – krlmlr

+1

我的意思是點在錯誤的地方。例如,「Tabbed」的最終值爲0.8,但該點出現在0.85。 – user1895691