如何让熊猫在相同的图上以相同的y轴范围绘制

埃莉诺拉

我正在尝试在彼此上方垂直绘制多个条形图。应该有一个标记的x轴(带有星期几)。到目前为止,我的代码是:

import pandas as pd
import matplotlib.pyplot as plt
import calendar

df = pd.read_csv("health.csv", header = None, names = ['Physical', 'Emotional'])
# Get Dayofweek index number (start with 6 for sunday) 6,0,1....
df['DayOfTheWeek'] = [(i+6) % 7  for i in range(len(df))]

# Get a map to translate to day of week
d = dict(zip(range(7),list(calendar.day_name)))
df['DayOfTheWeek'] = df['DayOfTheWeek'].map(d)

# Loop through the df (splitting week by week)
for i in range(int(round(len(df)/7))):
    plt.ylim([0,10])
    df.iloc[i*7:(i+1)*7].set_index('DayOfTheWeek').plot(kind='bar')
plt.show()

这有以下问题:

  1. 由于某些原因,生成的第一个图形为空白。
  2. 我希望同一图上的子图垂直分开,而不是很多单独的图
  3. 我的数据框有39行,但是上面的方法根本不绘制最后4点。

完整的输入数据为:

5,5
6,7
6,9
6,7
5,6
7,9
5,9
6,7
7,6
7,4
7,5
6,7
7,9
7,9
5,6
8,7
9,9
7,7
7,6
7,8
7,9
7,9
7,6
7,8
6,6
6,6
6,7
6,6
6,5
6,6
7,5
7,5
7,5
7,6
7,5
8,6
7,6
7,7
6,6
肯·西米

为此,您可以先设置图形布局,然后将显式轴对象传递给pandas plot方法。然后,我有条件地仅在最后一个图上显示x轴标签。我还删除了到日期名称的映射-现在可以直接通过绘图完成。显然,如果出于其他原因需要,可以放回去!

import pandas as pd
import matplotlib.pyplot as plt
import calendar

df = pd.read_csv("health.csv", header = None, names = ['Physical', 'Emotional'])
# Get Dayofweek index number (start with 6 for sunday) 6,0,1....
df['DayOfTheWeek'] = [(i+6) % 7  for i in range(len(df))]

df_calendar = calendar.Calendar(firstweekday=6)

weeks = int(round(len(df)/7))
fig, axes = plt.subplots(weeks, 1, figsize=(6, weeks*3))

# Loop through the df (splitting week by week)
for i in range(weeks):
    ax=axes[i]

    df.iloc[i*7:(i+1)*7].set_index('DayOfTheWeek').plot(kind='bar', ax=axes[i])
    ax.set_ylim([0,10])
    ax.set_xlim([-0.5,6.5])
    ax.set_xticks(range(7))

    if i == 0:
        ax.legend().set_visible(True)
    else:
        ax.legend().set_visible(False)

    if i == weeks-1:
        ax.set_xticklabels([calendar.day_name[weekday] for weekday in df_calendar.iterweekdays()])
        ax.set_xlabel("Day of the week")
    else:
        ax.set_xticklabels([])
        ax.set_xlabel("")

plt.savefig("health.png")
plt.show()

健康

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何让我的 Plotly 子图使用相同的 y 轴范围?

绘制相同的x和y轴刻度

如何在ChartJS V2中的相同X轴的Y轴上绘制多条线?

如何在多个子图上设置相同的轴值?

如何在R的“ y”轴的两侧绘制(几乎)相同的函数?

在Python中,如何绘制具有相同x和y轴的不同类别的数据?

在Streamlit中如何使用图表达在Y轴上绘制多个值(相同单位)?

如何在与Seaborn相同的图上绘制多个直方图

如何在熊猫数据框图上更改Y轴

在一个图上绘制具有相同 x 轴的多个系列(散点线)

如何使 x 轴和 y 轴的间距长度相同?

如何绘制具有相同 x 轴的每个列表元素?

Gnuplot 中相同的增量、相同的轴长但不同的 x 和 y 范围

如何使数值属性的轴范围相同,而序号组的轴范围不同

Matplotlib:如何绘制两个具有相同x / y轴但一个沿y轴从另一个开始的条形图

如何用大熊猫在Y轴上绘制年份,在X轴上绘制月份?

平行图中相同的Y轴

R:如何使x和y轴的长度相同?

如何以相同的距离减少matplot中的y轴

如何使多个子图具有相同的y轴?

绘制两个 y 轴相同位置的零线

使用Python库绘制共享相同y轴的两个水平条形图

如何在具有多个y轴的多折线图上绘制数据点

如何绘制具有相同 x 值的多个 y 值?

如何将数据的子集绘制在与完整数据集相同的图上?

如何绘制多个y轴?

如何在具有不同y范围的ggplot中绘制双y轴?

如何通过具有相同轴但用R向前更改x轴来绘制多个图形?

不同图形上Y轴的比例相同