首页 > 解决方案 > 为使用 matplotlib 绘制 pandas 数据框设置不同的标记大小

问题描述

我想减少我用数据框绘制的每一行的标记大小。我可以像这样设置一个独特的标记大小:

df = pd.read_csv(file_string, index_col=0)
df.plot(style=['^-','v-','^-','v-','^-','v-'], markersize=8)

我为每一行设置了不同的样式(我新有 6 个),现在我想对尺寸做同样的事情,这不起作用:

df = pd.read_csv(file_string, index_col=0)
df.plot(style=['^-','v-','^-','v-','^-','v-'], markersize=[16,14,12,10,8,6])

我怎样才能实现这样的目标?

标签: pythonpython-3.xpandasmatplotlib

解决方案


上述较早的答案适用于少数列。如果您不想多次重复相同的代码,您还可以编写一个在标记之间交替的循​​环,并在每次迭代时减小标记大小。在这里,我每次将其减少 4,但您想要减少每个标记大小的起始大小和数量显然取决于您。

df = pd.DataFrame({'y1':np.random.normal(loc = 5, scale = 10, size = 20),
                   'y2':np.random.normal(loc = 5, scale = 10, size = 20),
                   'y3':np.random.normal(loc = 5, scale = 10, size = 20)})
size = 18
for y in df.columns:
    col_index = df.columns.get_loc(y)
    if col_index % 2 == 0:    
        plt.plot(df[y], marker = '^', markersize = size)
    else:
        plt.plot(df[y], marker = 'v', markersize = size)
    size -= 4
plt.legend(ncol = col_index+1, loc = 'lower right')

在此处输入图像描述


推荐阅读