Python 宽度<;1.0,宽度大于等于=1

Python 宽度<;1.0,宽度大于等于=1,python,pandas,matplotlib,Python,Pandas,Matplotlib,为什么我的铁条这么薄?我尝试将宽度设置为1,但它们变得非常厚。我不知道还能尝试什么。默认厚度为0.8,它应该是这样的吗 import matplotlib.pyplot as plt import matplotlib.dates as mdates import pandas as pd import numpy as np working_runs = pd.DataFrame(np.random.uniform(1, 2, 210),

为什么我的铁条这么薄?我尝试将宽度设置为1,但它们变得非常厚。我不知道还能尝试什么。默认厚度为0.8,它应该是这样的吗

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import numpy as np

working_runs = pd.DataFrame(np.random.uniform(1, 2, 210),
                            columns=['distance'],
                            index=pd.date_range('2019-06-01', periods=210, freq='D'))
summed = working_runs['distance'].resample('W').sum()
df = pd.DataFrame(summed)

fig, ax = plt.subplots()

ax.bar(df.index, df.distance)
ax.set_xticks(df.index)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%B %d"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%B %d"))
plt.xticks(rotation=90) 

fig = ax.get_figure()

fig.set_figheight(10)
fig.set_figwidth(12)

plt.title('2019 Weekly Running Miles')
plt.ylabel('Distance /m')

fig.savefig("output.png")
我试着这样改变它:

ax.bar(测向索引、测向距离、宽度=1)

0.9看起来没有任何不同,1.0看起来是这样的:


请参见文档中的:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
这里还有文档链接:


相关的

我可以证实这种奇怪的行为,当设置宽度小于1.0时,它似乎被解释为一天的宽度。将其设置为1.0或更高时,它将被解释为一周的宽度

熊猫和matplotlib如何合作似乎是个问题

解决方法可以是使用
edgecolor
ax.bar(df.index,df.distance,width=1,edgecolor='white')
如:

导入matplotlib.pyplot作为plt
将matplotlib.dates导入为mdates
作为pd进口熊猫
将numpy作为np导入
从pandas.plotting导入寄存器\u matplotlib\u转换器
寄存器_matplotlib_转换器()
工作运行=pd.数据帧(np.随机.均匀(1,2210),
列=[“距离”],
索引=pd.日期\范围('2019-06-01',期间=210,频率=D'))
summared=工作距离['distance']。重采样('W')。sum()
df=pd.数据帧(总和)
图,ax=plt.子批次()
最大条(df.index,df.distance,width=1,edgecolor='white')
ax.xaxis.set\u major\u格式化程序(mdates.DateFormatter(“%B%d”))
ax.xaxis.set\u major\u定位器(mdates.DayLocator(间隔=7))
ax.自动缩放(启用=真,轴=x',紧密=真)
plt.xticks(旋转=90)
plt.title(“2019年每周跑步英里数”)
plt.ylabel('距离/m')
plt.show()

我用
df.plot.bar(y='distance',width=0.9,ax=ax)
在熊猫体内做实验。格式化日期可以通过显式地将
索引
转换为标签列表来完成。同样在这种情况下,使用
width=1
edgecolor='white'
时,绘图看起来会更好

导入matplotlib.pyplot作为plt
将matplotlib.ticker作为mticker导入
作为pd进口熊猫
将numpy作为np导入
工作运行=pd.数据帧(np.随机.均匀(1,2210),
列=[“距离”],
索引=pd.日期\范围('2019-06-01',期间=210,频率=D'))
summared=工作距离['distance']。重采样('W')。sum()
df=pd.数据帧(总和)
图,ax=plt.子批次()
测向图条形图(y=距离’,宽度=0.9,ax=ax)
plt.xticks(范围(长度(测向指数)),
[t.to_pydatetime().strftime(“%b%d”)用于df.index中的t],
旋转=90)
plt.title(“2019年每周跑步英里数”)
plt.ylabel('距离/m')
plt.show()

厚度以x单位表示。如果你的单位是“天”,你可以将它设置为7来覆盖你数据的时间步长。我不知道怎么做,你有链接吗?(数据为每周总计。)您是否能够添加少量数据样本,以便我们可以重新创建您的问题。由于设置width=x的“常规”解决方案似乎对您不起作用。我尝试设置宽度:
ax.bar(df.index,df.distance,width=1)
在我将其设置为1之前,不会发生任何变化,然后这些条会接触,看起来很糟糕。因此,可能会将绘图图形放大,尝试这样:plt.figure(figsize=(20,10))我是这样做的:
fig.set\u figheight(20)fig.set\u figwidth(10)
不会改变棒材厚度。我认为这是因为数据是每周总和。