kal*_*eni 3 python matplotlib pandas
我正在尝试使用seaborn.factorplot创建条形图.我的代码看起来像这样:
import seaborn
import matplotlib.pyplot as plt
df=pd.read_csv('data.csv')
fg = seaborn.factorplot(x='vesselID', y='dur_min', hue='route', size=6,aspect=2 ,kind='bar', data=df)
Run Code Online (Sandbox Code Playgroud)
我的data.csv看起来像这样
,route,vesselID,dur_min
0,ANA-SJ,13,39.357894736842105
1,ANA-SJ,20,24.747663551401867
2,ANA-SJ,38,33.72142857142857
3,ANA-SJ,69,37.064516129032256
4,ED-KING,30,22.10062893081761
5,ED-KING,36,21.821428571428573
6,ED-KING,68,23.396551724137932
7,F-V-S,1,13.623239436619718
8,F-V-S,28,14.31294964028777
9,F-V-S,33,16.161616161616163
10,MUK-CL,18,13.953191489361702
11,MUK-CL,19,14.306513409961687
12,PD-TAL,65,12.477272727272727
13,PT-COU,52,27.48148148148148
14,PT-COU,66,28.24778761061947
15,SEA-BI,25,30.94267515923567
16,SEA-BI,32,31.0
17,SEA-BI,37,31.513513513513512
18,SEA-BR,2,55.8
19,SEA-BR,13,57.0
20,SEA-BR,15,54.05434782608695
21,SEA-BR,17,50.43859649122807
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何改变条的宽度,我无法通过改变大小和方面来实现这一点.
tsa*_*ndo 25
就我而言,我不必定义自定义函数来更改上面建议的宽度(顺便说一句,这对我不起作用,因为所有条形图都未对齐)。我只是将属性添加dodge=False到seaborn 绘图函数的参数中,这就成功了!例如
sns.countplot(x='x', hue='y', data=data, dodge=False);
Run Code Online (Sandbox Code Playgroud)
请参阅此处的其他参考:https ://github.com/mwaskom/seaborn/issues/871
我的条形图现在看起来像这样:
jsg*_*not 12
实际上,您可以使用函数直接使用patches属性set_width.但是,如果您只这样做,您只需修改补丁宽度,而不是修改轴上的位置,因此您也必须更改x坐标.
import pylab as plt
import seaborn as sns
tips = sns.load_dataset("tips")
fig, ax = plt.subplots()
sns.barplot(data=tips, ax=ax, x="time", y="tip", hue="sex")
def change_width(ax, new_value) :
for patch in ax.patches :
current_width = patch.get_width()
diff = current_width - new_value
# we change the bar width
patch.set_width(new_value)
# we recenter the bar
patch.set_x(patch.get_x() + diff * .5)
change_width(ax, .35)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12725 次 |
| 最近记录: |