How to rotate x-axis tick labels in Pandas barplot

后端 未结 6 1678
孤城傲影
孤城傲影 2020-12-07 12:51

With the following code:

import matplotlib
matplotlib.style.use(\'ggplot\')
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({ \'cellty         


        
相关标签:
6条回答
  • 2020-12-07 13:18

    Try this -

    plt.xticks(rotation=90)
    

    0 讨论(0)
  • 2020-12-07 13:18

    The question is clear but the title is not as precise as it could be. My answer is for those who came looking to change the axis label, as opposed to the tick labels, which is what the accepted answer is about. (The title has now been corrected).

    for ax in plt.gcf().axes:
        plt.sca(ax)
        plt.xlabel(ax.get_xlabel(), rotation=90)
    
    0 讨论(0)
  • 2020-12-07 13:22

    You can use set_xticklabels()

    ax.set_xticklabels(df['Names'], rotation=90, ha='right')
    
    0 讨论(0)
  • 2020-12-07 13:25

    For bar graphs, you can include the angle which you finally want the ticks to have.

    Here I am using rot=0 to make them parallel to the x axis.

    series.plot.bar(rot=0)
    plt.show()
    plt.close()
    
    0 讨论(0)
  • 2020-12-07 13:32

    The follows might be helpful:

    # Valid font size are xx-small, x-small, small, medium, large, x-large, xx-large, larger, smaller, None
    
    plt.xticks(
        rotation=45,
        horizontalalignment='right',
        fontweight='light',
        fontsize='medium',
    )
    

    Here is the function xticks[reference] with example and API

    def xticks(ticks=None, labels=None, **kwargs):
        """
        Get or set the current tick locations and labels of the x-axis.
    
        Call signatures::
    
            locs, labels = xticks()            # Get locations and labels
            xticks(ticks, [labels], **kwargs)  # Set locations and labels
    
        Parameters
        ----------
        ticks : array_like
            A list of positions at which ticks should be placed. You can pass an
            empty list to disable xticks.
    
        labels : array_like, optional
            A list of explicit labels to place at the given *locs*.
    
        **kwargs
            :class:`.Text` properties can be used to control the appearance of
            the labels.
    
        Returns
        -------
        locs
            An array of label locations.
        labels
            A list of `.Text` objects.
    
        Notes
        -----
        Calling this function with no arguments (e.g. ``xticks()``) is the pyplot
        equivalent of calling `~.Axes.get_xticks` and `~.Axes.get_xticklabels` on
        the current axes.
        Calling this function with arguments is the pyplot equivalent of calling
        `~.Axes.set_xticks` and `~.Axes.set_xticklabels` on the current axes.
    
        Examples
        --------
        Get the current locations and labels:
    
            >>> locs, labels = xticks()
    
        Set label locations:
    
            >>> xticks(np.arange(0, 1, step=0.2))
    
        Set text labels:
    
            >>> xticks(np.arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))
    
        Set text labels and properties:
    
            >>> xticks(np.arange(12), calendar.month_name[1:13], rotation=20)
    
        Disable xticks:
    
            >>> xticks([])
        """
    
    0 讨论(0)
  • 2020-12-07 13:45

    Pass param rot=0 to rotate the xticks:

    import matplotlib
    matplotlib.style.use('ggplot')
    import matplotlib.pyplot as plt
    import pandas as pd
    
    df = pd.DataFrame({ 'celltype':["foo","bar","qux","woz"], 's1':[5,9,1,7], 's2':[12,90,13,87]})
    df = df[["celltype","s1","s2"]]
    df.set_index(["celltype"],inplace=True)
    df.plot(kind='bar',alpha=0.75, rot=0)
    plt.xlabel("")
    plt.show()
    

    yields plot:

    0 讨论(0)
提交回复
热议问题