python - 为使用 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])
我怎样才能实现这样的目标?
解决方案
上述较早的答案适用于少数列。如果您不想多次重复相同的代码,您还可以编写一个在标记之间交替的循环,并在每次迭代时减小标记大小。在这里,我每次将其减少 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')
推荐阅读
- python - Pygame Collidepoint 函数未按预期工作
- java - Kakfa consumer.poll 不返回 2.4.0 的记录
- c++ - 我希望两个循环并行运行
- javascript - 当用户关闭移动浏览器窗口时如何采取行动?
- android - Android Studio - Flutter 项目 - “构建失败并出现异常”
- android - 如何从android手机上的网页获取xpath?
- go - 关闭完成通道后 goroutine 缺少打印
- python - 是否可以将一个类的方法导入 Python 中的另一个类?
- javascript - 在 javascript 中不使用 push() 更新数组
- javascript - 正则表达式 | 检测字符串中 < 10 的数字(日期表示)