离散轴的间距由分类变量组成

时间:2017-05-23 18:04:25

标签: r ggplot2

我有一个分类轴,我希望在视觉上将该分类变量中的组分开。我不想因为它占用太多空间而在视觉上不那么干净。

这是我想要的一个直观的例子,涉及一些繁琐的黑客攻击(对于用于间距的非数据条目,将alpha设置为0)。

dd2 <- data.frame(x=factor(1:10,), y=c(1:10), groups=c("A",rep("B",9)))

我希望能够使用以下数据结构创建此图而不必破解额外的类别(使用我试图绘制的数据量/组​​数量是不可行的)(其中变量“groups”确定间距发生的位置):

dfm_select()

enter image description here

1 个答案:

答案 0 :(得分:4)

您可以通过class C{ public: void ini(){/* some code */} // the following methods and data members are actually not necessary; they have been introduced just for demonstration purpose: void setX(int _x) { x = _x; }; void print() { cout << x << endl; } int x; }; class D{ protected: std::vector<C> regis = std::vector<C>(3); //will ini(); later public: C &field0 = (regis[0].setX(5),printAllRegis("at field0:"),regis[0]); C &field1 = (regis[1].setX(7),printAllRegis("at field1:"),regis[1]); C &field2 = (regis[2].setX(regis[0].x + regis[1].x),printAllRegis("at field2:"),regis[2]); char dummy = (cout << "after field2: ", field2.print(), '0'); D(){ } void ini(){ for(auto ele:regis){ ele.ini(); } } void printAllRegis(string header) { int i=0; cout << header << endl; for(auto ele:regis){ cout << " field" << i++ << ":"; ele.print(); } } }; int main() { D d; /* Output: at field0: field0:5 field1:0 field2:0 at field1: field0:5 field1:7 field2:0 at field2: field0:5 field1:7 field2:12 after field2: 12 */ return 0; } breaks limits参数获取您要查找的结果。将scale_x_discrete设置为x轴上的因子级别,将breaks设置为因子级别,您想要/需要它们。

以下是一个例子:

limits

enter image description here