Matplotlib 按分类因素散布颜色

2023-11-27

我有一个基本的散点图,其中 x 和 y 是浮动的。但我想根据第三个分类变量更改标记的颜色。分类变量是字符串形式。这似乎引起了一个问题。

要使用 iris 数据集 - 这是我想我会使用的代码:

#Scatter of Petal
x=df['Petal Length']
y=df['Petal Width']
z=df['Species']
plt.scatter(x, y, c=z, s=15, cmap='hot')
plt.xlabel('Petal Width')
plt.ylabel('Petal Length')
plt.title('Petal Width vs Length')

但我收到一个错误:无法将字符串转换为浮点数:iris-setosa

在运行之前我是否必须将分类变量更改为数字变量,或者我可以对当前格式的数据做些什么?

Thanks

更新:整个回溯是:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-d67ee3bffc3b> in <module>()
      3 y=df['Petal Width']
      4 z=df['Species']
----> 5 plt.scatter(x, y, c=z, s=15, cmap='hot')
      6 plt.xlabel('Petal Width')
      7 plt.ylabel('Petal Length')

/Users/mpgartland1/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.pyc in scatter(x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, hold, **kwargs)
   3198         ret = ax.scatter(x, y, s=s, c=c, marker=marker, cmap=cmap, norm=norm,
   3199                          vmin=vmin, vmax=vmax, alpha=alpha,
-> 3200                          linewidths=linewidths, verts=verts, **kwargs)
   3201         draw_if_interactive()
   3202     finally:

/Users/mpgartland1/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.pyc in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, **kwargs)
   3605 
   3606         if c_is_stringy:
-> 3607             colors = mcolors.colorConverter.to_rgba_array(c, alpha)
   3608         else:
   3609             # The inherent ambiguity is resolved in favor of color

/Users/mpgartland1/anaconda/lib/python2.7/site-packages/matplotlib/colors.pyc in to_rgba_array(self, c, alpha)
    420             result = np.zeros((nc, 4), dtype=np.float)
    421             for i, cc in enumerate(c):
--> 422                 result[i] = self.to_rgba(cc, alpha)
    423             return result
    424 

/Users/mpgartland1/anaconda/lib/python2.7/site-packages/matplotlib/colors.pyc in to_rgba(self, arg, alpha)
    374         except (TypeError, ValueError) as exc:
    375             raise ValueError(
--> 376                 'to_rgba: Invalid rgba arg "%s"\n%s' % (str(arg), exc))
    377 
    378     def to_rgba_array(self, c, alpha=None):

ValueError: to_rgba: Invalid rgba arg "Iris-setosa"
to_rgb: Invalid rgb arg "Iris-setosa"
could not convert string to float: iris-setosa

正如您的回溯告诉您的那样,您无法将字符串传递给颜色参数。您可以传递颜色或将其解释为颜色本身的值数组。

See: http://matplotlib.org/api/pyplot_api.html?highlight=plot#matplotlib.pyplot.plot

可能有一种更优雅的方法,但一种实现如下(我使用了以下数据集:https://raw.githubusercontent.com/pydata/pandas/master/pandas/tests/data/iris.csv):

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
from pandas import read_csv

df = read_csv('iris.csv')

#Scatter of Petal
x=df['PetalLength']
y=df['PetalWidth']

# Get unique names of species
uniq = list(set(df['Name']))

# Set the color map to match the number of species
z = range(1,len(uniq))
hot = plt.get_cmap('hot')
cNorm  = colors.Normalize(vmin=0, vmax=len(uniq))
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=hot)

# Plot each species
for i in range(len(uniq)):
    indx = df['Name'] == uniq[i]
    plt.scatter(x[indx], y[indx], s=15, color=scalarMap.to_rgba(i), label=uniq[i])

plt.xlabel('Petal Width')
plt.ylabel('Petal Length')
plt.title('Petal Width vs Length')
plt.legend(loc='upper left')
plt.show()

Gives something like this: enter image description here

编辑:明确为图例添加标签。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 按分类因素散布颜色 的相关文章

  • 使用 matplotlib 滑块小部件更改图像中的 clim

    我几乎没有使用 python 的经验 但我正在尝试创建一个简单的脚本 该脚本加载图像并使用滑块小部件来调整颜色条的最小值和最大值 并相应地重新绘制图像数据 我正在尝试遵循这个例子 http matplotlib sourceforge ne
  • Matplotlib 与多处理冻结计算机

    我对 matplotlib 和多重处理有疑问 我启动第一个进程 在其中显示图像并选择一个区域 然后关闭图形 然后我启动另一个进程 在其中调用定期更新的图形函数 至此 一切正常 然后 当我尝试使用相同的图形功能启动另一个进程时 它冻结了我的整
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • Seaborn 将 xticks 从 float 更改为 int

    我正在绘制一个图表 其中seaborn为sns pylab为plt plt figure figsize 10 10 sns barplot y whatever y x whatever x data mydata plt xticks
  • 更改 Matplotlib 投影轴的背景颜色

    我正在尝试使用 Cartopy 创建一个图形 该图形需要在未投影的轴上绘制投影轴 这是一个尽可能简单的代码版本 它将轴上的内容替换为背景颜色 import matplotlib pyplot as plt import cartopy cr
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 使用 matplotlib 从“列表列表”绘制 3D 曲面

    我已经搜索了一些 虽然我可以找到许多有用的网格网格示例 但没有一个清楚地表明我如何将列表列表中的数据转换为可接受的形式 以适应我所讨论的各种方式 当谈到 numpy matplotlib 以及我所看到的建议的术语和步骤顺序时 我有点迷失 我
  • IndexError - 具有匀称形状的笛卡尔 PolygonPatch

    我曾经使用 shapely 制作一个圆圈并将其绘制在之前填充的图上 这曾经工作得很好 最近 我收到索引错误 我将代码分解为最简单的操作 但它甚至无法执行最简单的循环 import descartes import shapely geome
  • 带有两个滑块的交互式 matplotlib 绘图

    I used 绘图库创建一些图 这取决于 8 个变量 我想研究一下当我改变其中一些内容时情节如何变化 我创建了一些脚本来调用绘图库一个并生成不同的快照 稍后我将其转换成电影 这还不错 但有点笨拙 我想知道是否可以使用键盘按键与绘图重新生成进
  • 在 Python 上显示 Matlab mat 文件中的图像

    我目前正在尝试显示从此下载的 Mat 文件中的图像site http www rctn org bruno sparsenet 这是一个 mat 文件 所以我尝试使用 scipy io loadmat 函数加载它 但我似乎无法绘制图像 我究
  • 熊猫直方图 df.hist() 分组依据

    如何使用 group by 用 pandas DataFrame hist 绘制直方图 我有一个包含 5 列的数据框 A B C D 和 Group 有两个组类别 是 和 否 Using df hist 我获取了 4 列中每一列的历史记录
  • 选择 matplotlib xticks 频率

    我正在用字符串作为 x 标签绘制数据 我想控制标签频率 以免文本使轴过载 在下面的示例中 我只想每 3 个刻度看到一个标签 a d g j 我可以做到这一点的一种方法是每 n 个元素用 2 个空字符串替换 my xticks 元素 但我确信
  • 在 matplotlib 中用圆裁剪三角形

    我想画一个三角形 但其中一条边需要是圆弧段 该示例不起作用 需要删除圆圈外的所有蓝色 可以直接完成此操作 而无需自己计算整个轮廓吗 谢谢你 import matplotlib pyplot as plt fig plt figure ax
  • 在 Matplotlib 中选择标记大小

    我正在 matplotlib 中用方形标记绘制散点图 如下所示 我想实现这样的目标 这意味着我必须调整标记大小和图形大小 比例 以使标记之间没有空白 每个索引单元还应该有一个标记 x and y都是整数 所以如果y从 60 到 100 应该
  • 使用魔法函数 %matplotlib inline

    我试图看看使用之间的区别 matplotlib 内联并且没有这个声明 但两次输出没有区别 然后它有什么用 Output without matplotlib inline line Output with matplotlib inline
  • AttributeError:模块“matplotlib”没有属性“font_manager”

    我安装了 matplotlib 但 python 3 8 10 显示了这个错误 AttributeError module matplotlib has no attribute font manager What i am doing w
  • 如何在 python 中为一系列绘图创建标准颜色条

    我使用 matplotlib 在 python 中绘制一些数据 并且绘图需要标准颜色条 数据由一系列包含频率信息的 NxM 矩阵组成 因此简单的 imshow 图给出了带有描述频率的颜色的 2D 直方图 每个矩阵包含不同但重叠范围的数据 I
  • 在 Spyder 中使用 input() 时 Matplotlib 冻结

    Windows 7 如果我在命令行打开一个普通的 ipython 终端 我可以输入 import matplotlib pyplot as plt plt plot 1 2 3 4 5 plt show block False input
  • [matplotlib]:理解“set_ydata”方法

    我试图了解如何使用 set ydata 方法 我在 matplotlib 网页上找到了很多示例 但我只找到了 set ydata 被 淹没 在大型且难以理解的代码中的代码 我想要一个简短且易于理解的代码来帮助我理解 set ydata 的工
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm

随机推荐

  • 在循环中对字符串使用 += 是不好的做法吗?

    我在另一篇文章中看到了这种构建字符串的方法 该方法已被删除 其中一条评论将这种做法描述为 职业限制 为什么会这样呢 我会假设你在这里谈论 Java 来回答 我能想到不止一个原因 首先 Java 字符串是不可变的 当你执行 要连接字符串 将创
  • DataTable.Clear 和 DataTable.Rows.Clear 之间有区别吗?

    我记得直接调用的一些方法 属性之间存在差异数据表类 以及同名的方法 属性数据表 行财产 可能是我读到这篇文章的 RowCount Count 属性 区别在于其中之一忽略了数据行 行状态 其他人尊重 使用它 在这种特殊情况下 我想知道之间的区
  • keytool -genkey 错误:密钥库文件不存在

    我尝试创建一个新的自我认证密钥库文件 我使用的命令是 keytool genkey selfcert dname cn My Name ou Orga unit alias selfcertified keypass somepass ke
  • 具有最大长度的小数的正则表达式

    我不确定这是否可以用正则表达式实现 我会尝试使用正则表达式 但如果不可能 我会切换到双重验证 我的数据库 postgresql 接受decimal如 15 6 最多 15 位数字 最多 6 位小数 所以如果我有 10 个整数位 我可以有 5
  • SSRS 2014 报告部署问题

    我正在使用 SQL Server 2014 报告服务器 报告服务器版本显示在http localhost 报表服务器 is 12 0 4100 1 并且还使用 Visual Studio 2013 进行开发 最近我开始在新电脑上工作 并且只
  • 通过App连接WiFi网络

    我实际上创建了一个应用程序 其中对内容的访问应受到用户连接的 WiFi 网络的限制 那么是否可以通过App自动登录安全WiFi呢 我不想强迫用户手动执行此操作 对于用户来说它应该尽可能简单 也许有一种方法可以为设备安装网络配置文件或类似的东
  • 获取盈透证券 API 中列出的期权和期货的参数

    有很多例子展示了如何从盈透证券获取特定资产的价格 然而 当我想获得一项资产的整个期权链时 我不知道列出了哪些特定的行使价 期货也是如此 我不知道目前有哪些到期日 因此 对于期权 我只是循环遍历所有可能的罢工 reqMktData对于每个 还
  • 使用 NEST 和 ElasticSearch 进行删除

    我在使 NEST 的 DeleteByQuery 方法正常工作时遇到了一些困难 很简单 查询从未找到任何要删除的内容 我不明白为什么 我使用相同的查询返回记录 使用搜索 一切都按预期进行 private void Delete MyClas
  • ImageIO.write 不起作用?

    我正在编写 3D 绘画 并且在 java 中发现了一个问题 在代码的一部分中它正在工作 try ImageIcon savePane new ImageIcon save png String FilePath String JOption
  • 在管道中并行限制詹金斯

    我通过下面的代码看到了这条消息 在JENKINS 44085 如果我已经有一个包含 50 个项目的分支图 但我想一次并行 5 个项目 我需要如何修改此代码 我的代码已经在名为branches 的 var 中包含了 50 个项目的映射 put
  • 从 HTML 链接时,javascript 文件不工作

    所以我觉得 并希望 这很简单 我是 javascript 新手 正在尝试让它工作 当我从 html 链接到外部 js 文件时 它不起作用 但是 当将脚本代码直接输入到我的 HTML 中时 它确实可以工作 这是js文件 document re
  • 如何在 ASP.NET MVC Web API 中修剪模型的空间

    修剪传递给 MVC Web api 的模型的所有属性的最佳方法是什么 带有复杂对象的 post 方法 可以做的一件事就是在所有属性的 getter 中调用 Trim 函数 但是 我真的不喜欢这样 我想要一种简单的方法 就像这里提到的 MVC
  • 浮点运算:为什么加法顺序很重要?

    我知道不可能用有限的位数将所有数字表示为任意精度 并且浮点数的简单比较是不可取的 但我希望如果我将许多数字加在一起 order 我在其中添加它们并不重要 为了测试这个预测 我创建了一个随机数向量并计算它们的总和 然后对向量进行排序并再次计算
  • 如何将 与远程文件一起使用?

    我有一个专门用于静态内容的服务器 所以我不想使用资源目录来存储 javascript 文件 但我不想停止使用
  • 使用作用域时,$dialog 中的 ngModel 字段不会更新 ngDialog $scope 变量:$scope

    我有一个使用 ngDialog open 创建对话框的控制器 我在弹出的 dialog 中分配范围 scope 并使用 ng model 设置范围变量 但是 这些值并未在控制器 scope 中设置 ng click 函数能够调用 scope
  • SSL:为什么 Chrome 会报告混合内容? (德鲁帕尔 6)

    我刚刚有一个网站运行良好 整个网站都通过 SSL 运行 但 Google Chrome 抛出一条 此页面包含一些不安全元素 消息 这对于最终用户的可信度来说并不好 所有其他浏览器都工作正常 并给出金色挂锁 该网站是一个 Drupal 6 电
  • 在 Windows 上为 Mac OS X 开发?

    嗯 简单的情况 我碰巧是一名软件工程师 主要使用 Delphi 和 C 进行软件开发 Delphi 非常适合桌面应用程序 而 C 则非常适合与 ASP NET 结合用于 Web 应用程序 不过 我正在考虑自学更多有关 Mac 软件开发的知识
  • 在 Internet Explorer 中查看 HttpOnly 会话 cookie

    使用 Internet 选项 我可以看到所有持久 cookie 使用开发人员工具 我可以看到所有 JS 可访问的会话 cookie 似乎没有办法查看 HTTPOnly 会话 cookie 在 Firefox 中 有许多选项 内置选项和 Fi
  • 如何从android代码中知道路由器的IP地址?

    如何从代码中找到路由器的IP地址 网关地址 WifiInfo getIpAddress 返回设备的 IP 地址 在 shell 命令中 ipconfig 不返回任何值 这是我的解决方案 但如果有更好的方法 请告诉我 WifiManager
  • Matplotlib 按分类因素散布颜色

    我有一个基本的散点图 其中 x 和 y 是浮动的 但我想根据第三个分类变量更改标记的颜色 分类变量是字符串形式 这似乎引起了一个问题 要使用 iris 数据集 这是我想我会使用的代码 Scatter of Petal x df Petal