当前位置: 首页 > 知识库问答 >
问题:

带热图调色板的酒吧图

阮梓
2023-03-14

我使用matplotlib创建了一个简单的条形图。pyplotseaborn库。是否有可能以这样的方式更改条形图的颜色方案,即对应于较高计数的条形图具有较深的红色,而对应于较低计数的条形图具有浅红色?所以,某种热图应用于条形图。我怎么做?目前,我的计数图中有随机颜色。

df =
    DeviceId   Speed
    1          30
    1          35 
    1          31
    2          20
    2          25
    3          80

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

result = df.groupby(["DeviceId"])['Speed'].aggregate(np.median).reset_index()

plt.figure(figsize=(12,8))
sns.barplot(x="DeviceId", y="Speed", data=result)
plt.ylabel('Median speed', fontsize=12)
plt.xlabel('Device ID', fontsize=12)
plt.xticks(rotation='vertical')
plt.show()

更新:

我试过这个:

sns.barplot(x="DeviceId", y="Speed", data=result, palette=sns.cubehelix_palette(8))

但较暗的颜色并不对应较高的计数。看起来颜色是使用预定义的调色板随机分配给条的。

共有2个答案

毛越
2023-03-14

对于Python3。x必须调整标准步骤:

u = u"""DeviceId   Speed
    1          01
    1          09
    1          31
    2          20
    2          25
    3          80"""

import io
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotlib inline
sns.set(font_scale=1.5)

df     = pd.read_csv(io.StringIO(u), delim_whitespace=True)
result = df.groupby(["DeviceId"])['Speed'].aggregate(np.median).reset_index()

norm   = plt.Normalize(0, result["Speed"].values.max())
colors = plt.cm.RdYlGn(   result["Speed"].apply(norm ))

fig    = plt.figure(figsize=(12,8))
ax     = sns.barplot(x="DeviceId", y="Speed", data=result, palette=colors,  )

_ = plt.ylabel('Median speed', fontsize=12)
_ = plt.xlabel('Device ID'   , fontsize=12)
_ = plt.xticks(rotation= 90 )
plt.show()
陈瀚
2023-03-14

通过定义具有最小和最大数据值的规范化实例,可以根据colormap获得颜色,并使用此规范化和所选的colormap将数据映射到颜色。在这里,使用反向铜贴图可能有意义(请参阅colormap参考)

norm = plt.Normalize(result["Speed"].values.min(), result["Speed"].values.max())
colors = plt.cm.copper_r(norm(result["Speed"])) 

你可以在酒吧里用这些颜色

sns.barplot(x="DeviceId", y="Speed", data=result, palette=colors)

复制上述内容的完整代码:

u = u"""DeviceId   Speed
    1          30
    1          35 
    1          31
    2          20
    2          25
    3          80"""

import io
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#%matplotlib inline

df = pd.read_csv(io.StringIO(u), delim_whitespace=True)
result = df.groupby(["DeviceId"])['Speed'].aggregate(np.median).reset_index()

norm = plt.Normalize(result["Speed"].values.min(), result["Speed"].values.max())
colors = plt.cm.copper_r(norm(result["Speed"]))

plt.figure(figsize=(12,8))
sns.barplot(x="DeviceId", y="Speed", data=result, palette=colors)
plt.ylabel('Median speed', fontsize=12)
plt.xlabel('Device ID', fontsize=12)
plt.xticks(rotation='vertical')
plt.show()

0on进行规格化也可能对任何顺序颜色贴图都有很好的效果,

norm = plt.Normalize(0, result["Speed"].values.max())
colors = plt.cm.Purples(norm(result["Speed"]))
 类似资料:
  • 条形图用于绘制基于区域的图表。 在本节中,我们将讨论不同类型的条形图表。 Sr.No. 图表类型和描述 1 基本酒吧 基本条形图。 2 堆积吧 条形图有条形堆叠在一起。 3 负堆积区域 条形图与负堆栈。

  • 跟随Redis酒吧/酒吧 这很好用,我可以使用 使用redis cli 当我在另一个类(listener类)中将订户块添加到该通道时,问题就开始了,如下所示 在<代码>redis-cli中 问题是,当我将subscriber listener类添加到同一个rails应用程序时。。。它停止工作,因为侦听redis服务器并停止执行任何其他代码。。。它只是坐在那里听着。 那么,有没有办法在同一个rail

  • 我有问题得到一个图例显示在条形图,我已经创建了使用chartjs。留档谈到了一个图例模板,但是我似乎找不到一个如何在图中实现它的好例子。下面是我用来生成图形的代码。

  • 我正在开发一个应用程序,它用setHomeAsUpIndicator方法取代了活动的标题。到目前为止,一切都有意义,因为通过阅读文档可以理解,但我不明白为什么当我按下图标时,会启动某个活动。代码的这一特定部分如下所示: 当按下时,会启动另一个活动,但我不知道指示在哪里。 谢谢你的帮助!

  • 我试图从seaborn文档中创建一个这样的图形,但是条纹图的边缘颜色由色调决定。这是我的尝试: 但是男性和女性的调色板似乎是不同的。如何为两个类别使用相同的调色板? 我用海运0.6.dev

  • 调色板 返回上级 1、什么是调色板? 2、调色板的种类 3、对非主页面设置调色板 4、共享调色板 5、调色板动画 什么是调色板? 返回目录 基于调色板的页面需要调色板才能真正有意义的显示出来。一个基于调色板的页面,通常也被称作一个“色彩索引”页面,仅仅是一些数字的集合,其中的每一个数字代表一个像素。每一个数字的值都对应于一个色彩表中的项,这个表告诉DirectDraw对这个像素使用什么样的颜色。D