尝试制作多列图

2024-05-16 14:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做一个柱状图,其中y轴是平均粒度,x轴是沿着样带的距离,每个系列是一个日期和/或数值(其实并不重要)。你知道吗

我在Excel2010中尝试了几种不同的方法,但我想不通。我的希望是,假设在第一个位置,9,会有三个纵队,然后在12,会有两个纵队。如果有关系的话,假设总距离是50。该数据的结果应具有沿横断面/x轴的7组柱。你知道吗

我曾尝试使用python来实现这一点,但我的编码知识几乎为零。以下是我目前的代码:

import numpy as np    
import matplotlib.pyplot as plt

grainsize = [0.7912, 0.513, 0.4644, 1.0852, 1.8515, 1.812, 6.371, 1.602, 1.0251, 5.6884, 0.4166, 24.8669, 0.5223, 37.387, 0.5159, 0.6727]    
series = [2, 3, 4, 1, 4, 2, 3, 4, 1, 4, 1, 4, 1, 4, 1, 4]    
distance = [9, 9, 9, 12, 12, 15, 15, 15, 17, 17, 25, 25, 32.5, 32.5, 39.5, 39.5]

如果有人碰巧知道要使用的代码,它将非常有用。关于如何在Excel中实现这一点的建议也非常棒。你知道吗


Tags: 数据方法代码import距离关系as粒度
1条回答
网友
1楼 · 发布于 2024-05-16 14:37:04

有一个名为seaborn的绘图库,构建在matplotlib之上,它在一行中完成这项工作。你的例子:

enter image description here

import numpy as np     
import seaborn as sns 
from matplotlib.pyplot import show

grainsize = [0.7912, 0.513, 0.4644, 1.0852, 1.8515, 1.812, 6.371,
             1.602, 1.0251, 5.6884, 0.4166, 24.8669, 0.5223, 37.387, 0.5159, 0.6727]     
series = [2, 3, 4, 1, 4, 2, 3, 4, 1, 4, 1, 4, 1, 4, 1, 4]
distance = [9, 9, 9, 12, 12, 15, 15, 15, 17, 17, 25, 25, 32.5, 32.5, 39.5, 39.5]

ax = sns.barplot(x=distance, y=grainsize, hue=series, palette='muted')

ax.set_xlabel('distance') 
ax.set_ylabel('grainsize') 
show()

即使是一个完全的新手,你也可以通过编辑seaborn gallery中的许多例子来做很多事情。将它们用作训练轮:一次只编辑一件事,并思考发生了什么变化。你知道吗

相关问题 更多 >