强制原点从0开始

时间:2012-12-04 10:58:38

标签: r plot ggplot2 axes

如何在ggplot2中设置y轴和x轴的原点/截取?

x轴的线应恰好位于y=Z

使用Z=0或其他给定值。

4 个答案:

答案 0 :(得分:155)

xlimylim不会在此处删除它。您需要使用expand_limitsscale_x_continuousscale_y_continuous。尝试:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

enter image description here

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

enter image description here

您可能需要稍微调整一下以确保点不被切断(例如,请参阅x = 5y = 5处的点。

答案 1 :(得分:10)

只需将这些添加到您的ggplot中:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

示例

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

enter image description here

最后,注意出色,不要无意中排除图表中的数据。例如,position = 'dodge'可能导致条形图完全离开图表(例如,如果其值为零,并且您将轴从零开始),那么您可能看不到它,甚至可能不知道它在那里。我建议先完整地绘制数据,检查,然后使用以上技巧来改善绘图的美观性。

答案 2 :(得分:1)

我从链接中的Hadley Wickham的回答中了解到 here表示,在ggplot2中,轴不可能位于图形的中间。该网址中的某人建议删除标准轴,然后自行构建。

答案 3 :(得分:1)

在最新版本的ggplot2中,这可能更容易。

import React from 'react';
import { graphql } from 'gatsby';

const BlogPosts = (props) => {
    const { post } = props.post;
    return (
        <React.Fragment>
            <h1>{post.title}</h1>
        </React.Fragment>    
    
)};

export default BlogPosts;

enter image description here

有关更多详细信息,请参见p <- ggplot(mtcars, aes(wt, mpg)) p + geom_point() p+ geom_point() + scale_x_continuous(expand = expansion(mult = c(0, 0))) + scale_y_continuous(expand = expansion(mult = c(0, 0)))