以大小图例显示所有形状geom_point ggplot2

时间:2018-07-18 19:30:07

标签: r ggplot2

在我的绘图中使用了3种形状,class Form extends Component { constructor(props) { super(props); this.state = { task: '', count: [1] }; this.addTask = this.addTask.bind(this); this.change = this.change.bind(this); } render() { return ( <div> <h1>Form</h1> <form onSubmit = {this.onSubmit} method='post'> <div> {this.state.count.map((item, index) => { return ( <div key={index}> <input type='text' value={this.state.task} name='task' onChange={this.change} /> </div> ) })} </div> <button onClick={this.addTask}>addTask</button> <button>submit</button> </form> </div> ); } addTask(e) { e.preventDefault(); this.setState({ count: [...this.state.count, '1'] }) } onSubmit = (e) => { e.preventDefault(); const {submit} = this.props; submit({ task: this.state.task }); this.setState({ task: '' }) }; change(event) { const target = event.target; const value = target.type === 'checkbox' ? target.checked : target.value; const name = target.name; this.setState({ [name]: value }); } } export default connect(null, { submit })(Form); 中仅使用了实心圆(如图所示)。我试图找到一种方法将所有形状都包含在该图例中,有没有办法做到这一点?

图的数据框和代码:

size legend

enter image description here

1 个答案:

答案 0 :(得分:2)

我找到了一种解决方法,因为似乎没有简便的方法可以做到这一点。理想的解决方案是使形状彼此相邻,并在图例中只提及一次而不是重复。另外,此变通方法可能更具参数性,因为更改status的数量并显示新形状后,可以正确构造所有馈送给覆盖函数的矢量:

    l=c(5,10,25,50,75,100)
    mybreaks=c(rep(l,3))
    myshapes=c(rep(15,6),rep(16,6),rep(17,6))

    ggplot(data, aes(x=date, y=cnt2)) + 
    scale_y_log10(breaks=c(1,10,100,1000,5000)) +
    scale_size_continuous(trans="sqrt",range = c(1, 5),breaks=mybreaks) +
    geom_point(aes(col=category, size=per, shape=status), alpha=0.7)  +
    guides(size=guide_legend(ncol=3,override.aes = list( shape =myshapes)))

enter image description here