Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib将所有子批次的钢筋宽度设置为相同大小_Python_Pandas_Matplotlib - Fatal编程技术网

Python Matplotlib将所有子批次的钢筋宽度设置为相同大小

Python Matplotlib将所有子批次的钢筋宽度设置为相同大小,python,pandas,matplotlib,Python,Pandas,Matplotlib,我在下面的图中有3个子图。我将每个子地块的宽度设置为0.3,但现在条的大小不均匀。如何使钢筋尺寸相同,但保持钢筋对之间的间距 我的代码: g=['col1','col2','col3'] fig, axs = plt.subplots(1,len(g)/1,figsize = (50,20)) axs = axs.ravel() for j,x in enumerate(g): df_plot[x].value_counts(normalize=

我在下面的图中有3个子图。我将每个子地块的宽度设置为0.3,但现在条的大小不均匀。如何使钢筋尺寸相同,但保持钢筋对之间的间距

我的代码:

    g=['col1','col2','col3']
    fig, axs = plt.subplots(1,len(g)/1,figsize = (50,20))
    axs = axs.ravel()

    for j,x in enumerate(g):
        df_plot[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j],position = 0, title = 'mytitle', fontsize = 30, width=0.3)
        df_plot2[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j],position = 1, color='red', width=0.3)
        axs[j].title.set_size(40)
        fig.tight_layout()  

如果所有子地块的大小都相同,那么可以设置xaxis的限制,使所有条都具有相同的宽度

ax.set_xlim(-0.5,maxn-0.5)
其中
maxn
是要打印的最大条数


你可能想看看。鉴于此,最好更精确地指定需求。例如,子批次应保持其尺寸,还是应适应棒材尺寸?我可以更改子批次尺寸以适应类似的棒材宽度,但所有3个子批次的尺寸必须相同
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

col1 = np.random.choice(["Mon", "Tue", "Wed", "Thu", "Fri"], 100, p=[0.1, 0.4, 0.2, 0.2,0.1])
col2 = np.random.choice([0,1], 100, p=[0.4, 0.6])
col3 = np.random.choice(list("abcde"), 100, p=[0.15, 0.35, 0.1, 0.3,0.1])
df = pd.DataFrame({'col1':col1,'col2':col2,'col3':col3})


g=['col1','col2','col3']
fig, axs = plt.subplots(1,len(g)/1,figsize = (10,4))
axs = axs.ravel()

maxn = 5
for j,x in enumerate(g):
    df[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j],position = 0, title = 'mytitle', width=0.3)
    df[x].value_counts(normalize=True).head().plot(kind='bar',ax=axs[j],position = 1, color='red', width=0.3)
    axs[j].set_xlim(-0.5,maxn-0.5)

fig.tight_layout()
plt.show()