我是Python的新手,要想解决这个问题真的很困难。
我有这样的代码
df = p.read_csv("files/athena-query-1.txt", ";")
ax = df.hist(column="distance", range=[0.0, 0.5], bins=100, by="gate_id")
我只想在单独的图表上看到每个闸门的距离分布。如果有400 gate_id
,我想查看400个分布图。
它告诉我ax
是AxesSubplot
的集合。当我尝试绘制此图时,只会得到一张不可读的图。我的猜测是,它试图创建单个图表(图?)。
答案 0 :(得分:0)
编辑:
我转载了一个我认为您可能意味着的最小例子:
#create dataframe with 100 random values of normal distribution for 'distance', and distributing (1,2,3,4) as 'gate_id' evenly among the values:
df=pd.DataFrame({'distance': scipy.stats.norm.rvs(size=100), 'gate_id': 25*[1,2,3,4]})
df.hist(column='distance', range=[0.0, 0.5], bins=100, by='gate_id')
这将产生一个具有4个子图的图形,对应于'gate_id':
但是,如果我像您提到的那样尝试400,该数字甚至都不会显示。可能是因为它根本不足以容纳400个子图。这就是我推荐下面给出的第一个解决方案示例的原因。
原始:
如果要使用400个单独的分布图,那为什么不使用matplotlib创建400个图形呢?
from matplotlib import pyplot as plt
for i in range(400):
fig, ax = plt.subplots()
ax.plot(<dataframe['x']>,<dataframe['y']>)
或,您也可以尝试绘制具有许多子图的巨大图形,例如
fig, ( (ax1, ax2, ax3, ...<fill up here>..., ax10), (ax11, ..., ax20), ..., (ax91, ..., ax100)) = plt.subplots(nrows=10, ncols=10)
ax1.bar(<dataframe['x']>,<dataframe['y']>)
...
ax100.bar(<dataframe['x']>,<dataframe['y']>)
这仅适用于100个子图,不确定400个图是否太大。