相关疑难解决方法(0)

Python matplotlib多个条形图

如何在matplotlib中绘制多个条形图,当我试图多次调用条形函数时,它们重叠,如下图所示,红色的最高值只能看到.如何在x轴上绘制带有日期的多个条形图?

到目前为止,我试过这个:

import matplotlib.pyplot as plt
import datetime

x = [
    datetime.datetime(2011, 1, 4, 0, 0),
    datetime.datetime(2011, 1, 5, 0, 0),
    datetime.datetime(2011, 1, 6, 0, 0)
]
y = [4, 9, 2]
z = [1, 2, 3]
k = [11, 12, 13]

ax = plt.subplot(111)
ax.bar(x, y, width=0.5, color='b', align='center')
ax.bar(x, z, width=0.5, color='g', align='center')
ax.bar(x, k, width=0.5, color='r', align='center')
ax.xaxis_date()

plt.show()
Run Code Online (Sandbox Code Playgroud)

我懂了:

在此输入图像描述

结果应该是这样的,但是日期在x轴上,并且柱子彼此相邻:

在此输入图像描述

python matplotlib

59
推荐指数
6
解决办法
19万
查看次数

如何从Python中的字符串列表中创建直方图?

我有一个字符串列表:

a = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'c', 'c', 'd', 'e', 'e', 'e', 'e', 'e']
Run Code Online (Sandbox Code Playgroud)

我想制作一个直方图来显示字母的频率分布.我可以使用以下代码创建一个包含每个字母数的列表:

from itertools import groupby
b = [len(list(group)) for key, group in groupby(a)]
Run Code Online (Sandbox Code Playgroud)

如何制作直方图?我可能在列表中有一百万个这样的元素a.

python string histogram

27
推荐指数
5
解决办法
4万
查看次数

如何在seaborn的酒吧顶部添加百分比?

鉴于以下计数图,我如何将百分比放在栏杆上?

import seaborn as sns
sns.set(style="darkgrid")
titanic = sns.load_dataset("titanic")
ax = sns.countplot(x="class", hue="who", data=titanic)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

例如,对于"第一",我想要总的第一人/总第一,总第一女人/总第一,总第一个孩子/总第一个在他们各自的酒吧之上.

如果我的解释不清楚,请告诉我.

谢谢!

python matplotlib seaborn

25
推荐指数
5
解决办法
3万
查看次数

Seaborn Barplot - 显示价值观

我想看看如何在Seaborn中做两件事,使用条形图来显示数据框中的值,但不在图表中

1)我想在绘制另一个字段时显示数据框中一个字段的值.例如,下面,我正在绘制'tip',但我想将'total_bill'的值置于每个柱的中心位置(即星期五上方325.88,星期六上方1778.40等)

2)有没有办法缩放条形的颜色,最小值'total_bill'具有最亮的颜色(在本例中为星期五),最高值'total_bill'具有最暗颜色.显然,当我进行缩放时,我会坚持使用一种颜色(即蓝色).

谢谢!我确信这很容易,但我很想念它..

虽然我看到其他人认为这是另一个问题(或两个)的重复,但我错过了如何使用图中没有的值作为标签或阴影的基础的部分.怎么说,用total_bill作为基础.对不起,我根据这些答案无法弄明白.

从以下代码开始,

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-    book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

在此输入图像描述

临时解决方案:

for index, row in groupedvalues.iterrows():
    g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

着色上,使用下面的示例,我尝试了以下内容:

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()

pal = sns.color_palette("Greens_d", len(data))
rank = groupedvalues.argsort().argsort() 
g=sns.barplot(x='day',y='tip',data=groupedvalues)

for index, row in groupedvalues.iterrows():
    g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

AttributeError:'DataFrame'对象没有属性'argsort'

所以我尝试了修改:

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',') …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

18
推荐指数
5
解决办法
5万
查看次数

matplotlib高级条形图

我需要重新创建一个类似于下面在Excel中创建的图表.我希望使用matplotlib,但似乎无法找到任何关于如何做这样的图表的例子或参考.我需要根据性能阈值对条形进行着色,并显示阈值.谁能指出我正确的方向?不过,我确实需要能够用Python做到这一点.情节例子

python plot graph matplotlib

13
推荐指数
1
解决办法
5263
查看次数

如何在条形图(Python)上的条形图上面写文字?

我有这个图: 示例matplotlib条形图 我想在每列上面写上计数.这些值位于第一个和第二个列表中.你能帮我解决这个问题吗?我尝试了一些没有成功的事

这是图表的代码:

countListFast = [1492.0, 497.0, 441.0, 218.0, 101.0, 78.0, 103.0]
countListSlow = [1718.0, 806.0, 850.0, 397.0, 182.0, 125.0, 106.0]

errorRateListOfFast = ['9.09', '9.09', '9.38', '9.40', '7.89', '8.02', '10.00']
errorRateListOfSlow = ['10.00', '13.04', '14.29', '12.50', '14.29', '14.53', '11.11']

opacity = 0.4
bar_width = 0.35

plt.xlabel('Tasks')
plt.ylabel('Error Rate')
plt.xticks(range(len(errorRateListOfFast)),('[10-20)', '[20-30)', '[30-50)', '[50-70)','[70-90)', '[90-120)', ' [120 < )'), rotation=30)
        plt.bar(np.arange(len(errorRateListOfFast))+ bar_width, errorRateListOfFast, bar_width, align='center', alpha=opacity, color='b', label='Fast <= 6 sec.')
plt.bar(range(len(errorRateListOfSlow)), errorRateListOfSlow, bar_width, align='center', alpha=opacity, color='r', label='Slower > 6 sec.')
plt.legend() …
Run Code Online (Sandbox Code Playgroud)

python plot graph matplotlib

13
推荐指数
3
解决办法
2万
查看次数

matplotlib中的堆栈条形图并为每个部分添加标签(和建议)

我试图在matplotlib中复制以下图像,似乎是我唯一的选择.虽然看起来你不能堆叠barh图,所以我不知道该怎么做

在此输入图像描述

如果你知道一个更好的python库来绘制这种东西,请告诉我.

这就是我可以想到的一切:

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt

people = ('A','B','C','D','E','F','G','H')
y_pos = np.arange(len(people))
bottomdata = 3 + 10 * np.random.rand(len(people))
topdata = 3 + 10 * np.random.rand(len(people))
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111)
ax.barh(y_pos, bottomdata,color='r',align='center')
ax.barh(y_pos, topdata,color='g',align='center')
ax.set_yticks(y_pos)
ax.set_yticklabels(people)
ax.set_xlabel('Distance')

plt.show()
Run Code Online (Sandbox Code Playgroud)

然后我必须使用ax.text单独添加标签,这将是乏味的.理想情况下,我只想指定要插入的部分的宽度,然后用我选择的字符串更新该部分的中心.外面的标签(例如3800)我可以稍后添加自己,它主要是条形部分本身的标签,并以一种很好的方式创建这个堆叠的方法我遇到了问题.你甚至可以用任何方式指定"距离"即颜色范围吗?

在此输入图像描述

python matplotlib

12
推荐指数
2
解决办法
3万
查看次数

Grouped Bar graph Pandas

我有一张DataFrame名为pandas的桌子df:

+--- -----+------------+-------------+----------+------------+-----------+
|avg_views| avg_orders | max_views   |max_orders| min_views  |min_orders |
+---------+------------+-------------+----------+------------+-----------+
| 23       | 123       |   135       | 500      |    3       |    1      |
+---------+------------+-------------+----------+------------+-----------+ 
Run Code Online (Sandbox Code Playgroud)

我现在要寻找的是绘制一个分组条形图,在一个条形图中显示我(平均,最大,最小)的视图和订单.

也就是说,在x轴上会有视图和顺序相隔一段距离和3条(平均值,最大值,最小值)的视图和类似的订单.

我附上了一个示例条形图图像,只是想知道条形图应该如何看.

只是样品:绿色应为平均值,黄色为最大值和针脚 绿色应为平均值,黄色为最大值,粉红色为平均值.

我从matplotlib中的分组条形图之间设置了以下代码,但它对我不起作用:

plt.figure(figsize=(13, 7), dpi=300)

groups = [[23, 135, 3], [123, 500, 1]]
group_labels = ['views', 'orders']
num_items = len(group_labels)
ind = np.arange(num_items)
margin = 0.05
width = (1. - 2. * margin) / num_items

s = plt.subplot(1, 1, 1)
for num, vals in enumerate(groups): …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-2.7 python-3.x pandas

11
推荐指数
2
解决办法
2万
查看次数

Python pandas/matplotlib注释条形图列上方的标签

如何在条形图中的条形图上方添加值的标签:

import pandas as pd
import matplotlib.pyplot as plt

df=pd.DataFrame({'Users': [ 'Bob', 'Jim', 'Ted', 'Jesus', 'James'],
                 'Score': [10,2,5,6,7],})

df = df.set_index('Users')
df.plot(kind='bar',  title='Scores')

plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

10
推荐指数
2
解决办法
1万
查看次数

带有中心标签的堆积条形图

我正试图在堆积条形图中"稳健地"将数据标签居中.下面给出一个简单的代码和结果.如您所见,数据标签并未真正居中于所有矩形.我错过了什么?

import numpy as np
import matplotlib.pyplot as plt

A = [45, 17, 47]
B = [91, 70, 72]

fig = plt.figure(facecolor="white")

ax = fig.add_subplot(1, 1, 1)
bar_width = 0.5
bar_l = np.arange(1, 4)
tick_pos = [i + (bar_width / 2) for i in bar_l]

ax1 = ax.bar(bar_l, A, width=bar_width, label="A", color="green")
ax2 = ax.bar(bar_l, B, bottom=A, width=bar_width, label="B", color="blue")
ax.set_ylabel("Count", fontsize=18)
ax.set_xlabel("Class", fontsize=18)
ax.legend(loc="best")
plt.xticks(tick_pos, ["C1", "C2", "C3"], fontsize=16)
plt.yticks(fontsize=16)

for r1, r2 in zip(ax1, ax2):
    h1 = r1.get_height() …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

10
推荐指数
2
解决办法
5707
查看次数

标签 统计

python ×10

matplotlib ×9

pandas ×3

graph ×2

plot ×2

seaborn ×2

histogram ×1

python-2.7 ×1

python-3.x ×1

string ×1