- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 4 列的数据框:
图表:
我正在尝试此代码,但它会生成错误。
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(12, 8))
df.plot.scatter('record_number', 'current', c ='step_name' ,ax=ax1)
df.plot.scatter('record_number', 'capacity', c ='step_name', ax=ax2)
plt.show()
是否有一种简单的方法可以根据数据帧列的唯一值创建颜色图?您需要使用自定义函数来执行此操作吗? pandas/matplotlib 可以像 Tableau 那样计算出来吗?
这是数据框中一些数据的示例。您可以复制数据并使用 pd.read_clipboard()
生成数据框。我将尝试找出一种不同的方式来提供此信息。
record_number current capacity step_name
16299 13.744 72.042 c
60942 24.33 53.954 c
78204 24.332 9.313 c
37146 24.327 54.379 c
60533 24.331 51.189 c
85517 24.331 58.738 c
48782 -24.325 -51.974 d
84008 24.334 48.54 c
76814 0 0 a
85310 24.329 57.339 c
70417 -24.326 -36.958 d
4822 -24.312 -32.166 b
24782 -24.321 -51.183 d
57664 24.336 31.799 c
43586 -24.33 -16.86 d
61505 24.33 57.759 c
74553 -24.332 -64.909 d
30388 24.329 8.705 c
26213 -24.333 -60.854 d
48086 -24.33 -47.271 d
9344 24.325 25.703 c
51946 -24.33 -73.356 d
40327 11.332 74.809 c
49750 -24.329 -58.516 d
85586 24.331 59.205 c
12217 24.33 45.12 c
58459 24.329 37.172 c
4596 -24.35 -30.639 b
83811 24.327 47.208 c
67173 -24.324 -15.036 d
59496 24.329 44.181 c
71065 -24.329 -41.337 d
9260 24.33 25.135 c
61812 24.327 59.834 c
28831 -5.316 -75.849 d
58634 24.328 38.355 c
13060 24.33 50.818 c
86841 24.328 67.687 c
23905 -24.325 -45.257 d
7888 24.33 15.863 c
61286 24.331 56.279 c
69391 -24.33 -30.025 d
11508 24.326 40.329 c
56630 24.333 24.811 c
31293 24.33 14.821 c
70474 -24.326 -37.343 d
49720 -24.325 -58.313 d
53255 24.33 2.001 c
78431 24.325 10.848 c
49790 -24.32 -58.786 d
21280 -24.323 -27.517 d
70510 -24.331 -37.587 d
56135 24.329 21.465 c
82821 24.329 40.518 c
12037 24.327 43.904 c
60760 24.33 52.724 c
59509 24.328 44.269 c
32294 24.328 21.586 c
22478 -24.324 -35.613 d
38317 24.331 62.293 c
30806 24.331 11.53 c
55349 24.323 16.153 c
21376 -24.326 -28.166 d
17742 -24.327 -3.608 d
39891 21.075 72.892 c
56550 24.325 24.27 c
3110 -24.301 -20.597 b
38899 24.331 66.226 c
4841 -24.354 -32.295 b
47390 -24.329 -42.567 d
23584 -24.335 -43.087 d
10756 24.329 35.246 c
32356 24.328 22.005 c
69773 -24.332 -32.606 d
86246 24.33 63.665 c
29851 24.335 5.075 c
25986 -24.325 -59.32 d
16786 6.566 73.361 c
40008 17.998 73.525 c
50391 -24.326 -62.848 d
28543 -8.234 -75.318 d
36890 24.329 52.649 c
46688 -24.325 -37.823 d
51818 -24.323 -72.491 d
26355 -24.336 -61.813 d
56514 24.329 24.027 c
26702 -24.336 -64.158 d
35480 24.33 43.119 c
13826 24.33 55.995 c
70074 -24.324 -34.64 d
14013 24.329 57.259 c
19769 -24.327 -17.306 d
16964 5.015 73.645 c
76072 -12.77 -74.762 d
65279 -24.331 -2.236 d
6778 24.327 8.361 c
41577 -24.332 -3.283 d
5987 24.326 3.015 c
78560 24.331 11.719 c
11034 24.333 37.125 c
最佳答案
如果您只想使用 pandas
和 matplotlib
,这应该可行:
#sorting dataframe along record_number column
df = df.sort_values('record_number')
#creating an index group for each separate set of rows with the same set_name
df['gg'] = (df['step_name'] != df['step_name'].shift()).cumsum()
#associating a color to the step_name
cols = {'a':'b', 'b':'g', 'c':'r', 'd':'c'}
#plotting
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(12, 8))
for (sn, gidx), sdf in df.groupby(['step_name', 'gg']):
ax1.plot(sdf['record_number'], sdf['current'], c=cols[sn], label=sn)
ax2.plot(sdf['record_number'], sdf['capacity'], c=cols[sn], label=sn)
#setting axis labels
plt.xlabel('record_number')
ax1.set_ylabel('current')
ax2.set_ylabel('capacity')
#making the legend, removing repeated entries
handles, labels = ax2.get_legend_handles_labels()
f_h = []
f_l = []
for h, l in zip(handles, labels):
if l not in f_l:
f_h.append(h)
f_l.append(l)
plt.legend(f_h, f_l)
plt.show()
此代码使用您的示例数据生成:
pandas
绘图函数可以产生不错的结果,但不太可定制。要制作复杂的绘图,通常最好使用 matplotlib
函数。
在这里,我创建了一个额外的行 df['gg']
来用不同的索引标记具有相同 'step_name'
的每组连续行,以便我绘图时可以对它进行分组(否则结果将是每种颜色各一条线)。
此外,您需要为 'step_name'
列中的每个字母关联一种颜色(我通过定义 col
字典来实现)。请参阅here了解 matplotlib 识别的格式来指定颜色。
关于python - 生成具有 2 个不同 y 轴和由另一个变量着色的点的图的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017856/
我遇到了一个奇怪的问题。我有这个: $(document).ready(function () {
我正在编写一个程序,它从列表中读取一些 ID,从中找出不同的 URL,然后将图像保存到我的 C: 驱动器中。 如果我在浏览器中导航到图像 URL,它们就会起作用。此外,如果我尝试从不同的服务器获取图像
我编写了一个 REST WCF RIA Silverlight 4.0 兼容服务,我可以从 javascript + jQuery.1.4.2.js + JSON2.js(当然,还可以从 .NET 4
我很确定这个网站实际上还没有得到回答。一劳永逸地,与 32 位有符号整数范围内的数字字符串匹配的最小正则表达式是什么,范围是 -2147483648至 2147483647 . 我必须使用正则表达式进
我有两个data.table;我想从那些与键匹配的元素中随机分配一个元素。我现在这样做的方式相当慢。 让我们具体点;这是一些示例数据: dt1<-data.table(id=sample(letter
我已经安装了 celery 、RabitMQ 和花。我可以浏览到花港。我有以下简单的工作人员,我可以将其附加到 celery 并从 python 程序调用: # -*- coding: utf-8 -
我正在使用 ScalaCheck 在 ScalaTest 中进行一些基于属性的测试。假设我想测试一个函数,f(x: Double): Double仅针对 x >= 0.0 定义的, 并返回 NaN对于
我想检查文件是否具有有效的 IMAGE_DOS_SIGNATURE (MZ) function isMZ(FileName : String) : boolean; var Signature: W
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我在工作中查看了一些代码,发现了一些我以前没有遇到过的东西: for (; ;) { // Some code here break; } 我们一直调用包含这个的函数,我最近才进去看看它是
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我试图编写一个函数,获取 2D 点矩阵和概率 p 并以概率 p 更改或交换每个点坐标 所以我问了一个question我试图使用二进制序列作为特定矩阵 swap_matrix=[[0,1],[1,0]]
这个问题在这里已经有了答案: Using / or \\ for folder paths in C# (5 个答案) 关闭 7 年前。 我在某个Class1中有这个功能: public v
PostgreSQL 10.4 我有一张 table : Column | Type ------------------------- id | integer| title
我正在 Postgresql 中编写一个函数,它将返回一些针对特定时区(输入)计算的指标。 示例结果: 主要问题是这只是一个指标。我需要从其他表中获取其他 9 个指标。 对于实现此目标的更简洁的方法有
我需要在 python 中模拟超几何分布(用于不替换采样元素的花哨词)。 设置:有一个装满人口许多弹珠的袋子。弹珠有两种类型,红色和绿色(在以下实现中,弹珠表示为 True 和 False)。从袋子中
我正在使用 MaterializeCSS 框架并动态填充文本输入。我遇到的一个问题是,在我关注该字段之前,valid 和 invalid css 类不会添加到我的字段中。 即使我调用 M.update
是否有重叠 2 个 div 的有效方法。 我有以下内容,但无法让它们重叠。 #top-border{width:100%; height:60px; background:url(image.jpg)
我希望你们中的一位能向我解释为什么编译器要求我在编译单元中重新定义一个静态固定长度数组,尽管我已经在头文件中这样做了。这是一个例子: 我的类.h: #ifndef MYCLASS_H #define
我正在使用旧线程发布试图解决相同问题的新代码。什么是安全 pickle ? this? socks .py from socket import socket from socket import A
我是一名优秀的程序员,十分优秀!