我需要帮助在matplotlib中从Pandas Dataframe 动态创建子图。我使用的数据来自data.word。
我已经创建了viz,但图为have been created manually。
我之所以需要它动态的原因是因为我将动态地应用一个过滤器(在Power BI中),我需要图形来调整过滤器。
这是我目前所知道的:我导入了数据,并得到了我需要的形状:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as
# read file from makeover monday year 2018 week 48
df = pd.read_csv(r'C:\Users\Ruth Pozuelo\Documents\python_examples\data\2018w48.csv', usecols=["city", "category","item", "cost"], index_col=False, decimal=",")
df.head()
这是表:
然后,我动态应用来自Power BI的过滤器:
df = df[df.category=='Party night']
然后根据应用过滤器后获得的项目数计算绘图数量:
itemCount = df['item'].nunique() #number of plots
如果我再绘制支线剧情:
fig, ax = plt.subplots( nrows=1, ncols=itemCount ,figsize=(30,10), sharey=True)
我把 backbone 拿过来:
到目前为止一切都很好!但是现在我正在研究如何将x轴输入到循环中来生成子类。我正在尝试下面的方法,但是没有任何效果。
#for i, ax in enumerate(axes.flatten()):
# ax.plot(??,cityValues, marker='o',markersize=25, lw=0, color="green") # The top-left axes
由于我已经有了图表的外观和感觉的代码,注解等,我希望能够使用plt.subplots方法,如果可能的话,我更喜欢不使用seborn。
有办法让他工作吗?
提前感谢!
2条答案
按热度按时间6rvt4ljy1#
数据呈现在我们面前,我们将其作为代码的基础。我准备了一个列列表和一个着色列表,并在它们之间循环。axes.rabel()比axes.fatten()内存效率更高。这是因为该列表包含每个子绘图区的一个对象,允许集中配置。
0yg35tkg2#
下面的工作示例。我使用seborn来绘制条形图,但想法是一样的,你可以循环遍历各个面并增加一个计数。从-1开始,使第一个计数= 0,并将其用作轴标签。