วิธีหมุนป้ายติ๊กแกน x ใน Pandas barplot


100

ด้วยรหัสต่อไปนี้:

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)
plt.xlabel("")

ฉันสร้างพล็อตนี้:

ใส่คำอธิบายภาพที่นี่

ฉันจะหมุนป้ายขีดแกน x เป็น 0 องศาได้อย่างไร

ฉันพยายามเพิ่มสิ่งนี้ แต่ไม่ได้ผล:

plt.set_xticklabels(df.index,rotation=90)

คำตอบ:


192

ผ่านพารามิเตอร์rot=0เพื่อหมุน 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()

พล็อตผลตอบแทน:

ใส่คำอธิบายภาพที่นี่


13

ลองสิ่งนี้ -

plt.xticks(rotation=90)

ใส่คำอธิบายภาพที่นี่


สิ่งนี้ทำให้ฉลากของฉันหมุนได้อย่างแน่นอน แต่ตอนนี้เมื่อฉันใช้plt.show()ตอนนี้ป้ายกำกับจะถูกตัดออกเนื่องจากป้ายกำกับวันที่ยาว
DNguyen

9

คำถามนั้นชัดเจน แต่ชื่อไม่แม่นยำเท่าที่ควร คำตอบของฉันคือสำหรับผู้ที่ต้องการเปลี่ยนป้ายแกนซึ่งตรงข้ามกับป้ายกำกับซึ่งเป็นคำตอบที่ยอมรับได้ (แก้ไขชื่อเรื่องแล้ว)

for ax in plt.gcf().axes:
    plt.sca(ax)
    plt.xlabel(ax.get_xlabel(), rotation=90)


3

สิ่งต่อไปนี้อาจเป็นประโยชน์:

# 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',
)

นี่คือฟังก์ชันxticks[การอ้างอิง]พร้อมตัวอย่างและ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([])
    """

2

สำหรับกราฟแท่งคุณสามารถรวมมุมที่คุณต้องการให้เห็บมีในที่สุด

ที่นี่ฉันใช้rot=0เพื่อทำให้มันขนานกับแกน x

series.plot.bar(rot=0)
plt.show()
plt.close()

1
และสำหรับฮิสโทแกรมมันคล้ายกันมาก แทนที่rotด้วยxrotหรือyrot
ทอม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.