散点图中的重叠趋势线,R

时间:2016-04-11 01:00:46

标签: r ggplot2 scatter-plot lm

我正在尝试使用R中的geom_smooth()覆盖多个趋势线。我目前有这段代码。

ggplot(mtcars2, aes(x=Displacement, y = Variable, color = Variable))
+ geom_point(aes(x=mpg, y = hp, col = "Power")) 
+ geom_point(aes(x=mpg, y = drat, col = "Drag Coef."))

(mtcars2是mtcars的标准化形式)

给我这张图。 enter image description here

我正在尝试使用geom_smooth(method ='lm')为这两个变量绘制两条趋势线。有什么想法吗?

(额外奖励:如果可能,我还想实施'shape = 1'参数来区分变量。以下方法不起作用)

geom_point(aes(x=mpg, y = hp, col = "Power", shape=2))

更新 我设法做到了。

ggplot(mtcars2, aes(x=Displacement, y = Variable, color = Variable)) 
+ geom_point(aes(x=disp, y = hp, col = "Power")) 
+ geom_point(aes(x=disp, y = mpg, col = "MPG")) 
+ geom_smooth(method= 'lm',aes(x=disp, y = hp, col = "Power"))
+ geom_smooth(method= 'lm',aes(x=disp, y = mpg, col = "MPG"))

看起来像这样。

enter image description here

但这是一段丑陋的代码。如果有人能让这段代码看起来更漂亮,那就太棒了。此外,我还没有能够实现'shape = 2'参数。

1 个答案:

答案 0 :(得分:5)

看起来你的生活比你需要的更难......你可以将其他参数传递到#define MAXLIST 100 template <typename T> class List { private: int maxList; int last = 0; T* List; public: List(); explicit List(int tam); bool listIsFull(); void destroyList(); }; template<typename T> List<T>::List<T>() { last = -1; maxList = MAXLIST; list = new T[maxList]; } template<typename T> List<T>::List<T>(int tam) { last = -1; maxList = tam; list = new T[maxList]; } template<typename T> void List<T>::destroyList() { last = -1; } template<typename T> bool List<T>::listIsFull() { if (last == MAXLIST - 1) return true; else return false; } ,例如aes()group

我不知道我的标准化是否正确,但这应该足以让你朝着正确的方向前进:

shape

产量:

enter image description here