【问题标题】:2 color bars in X and Y axisX 和 Y 轴上的 2 个彩条
【发布时间】:2021-11-20 02:49:56
【问题描述】:

我正在编写一些天文学代码,其中我正在绘制 Hr 图,问题是颜色在这里非常重要,X 轴和 Y 轴都必须标记,但轴都在不同的比例上。你会如何建议我这样做?我当前的代码如下。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data=pd.read_csv('Sagittarius_star_cloud.csv')
arr=data['bp_rp']
arr2=data['gp']
X=[]
Y=[]
for i in range(len(arr)):
    X.append(arr[i])
for i in range(len(arr2)):
    Y.append(arr2[i])
fig = plt.figure()
plt.ylim(max(Y), min(Y))
ax=fig.add_subplot(111)
plt.scatter(x=X, y=Y, c=X, cmap='Spectral_r')
plt.scatter(x=X, y=Y, c=Y, cmap='Spectral_r')
plt.colorbar(label="Star Color", orientation="horizontal")
plt.colorbar(label="Star Color", orientation="vertical")
plt.show()

【问题讨论】:

  • 你可以忽略 NumPy 导入,我试图用 NumPy 数组做一些事情,但我没有完全掌握这个概念,忘记删除导入。
  • (顺便说一句,pandas 已经包含了numpy,因此再次导入它不需要任何费用。您已经付出了代价。)
  • 所以在您的代码中,您是否尝试同时为两个方向设置颜色条,这是您的问题?
  • 是的,我正在尝试让一个在 X 轴上,另一个在 Y 轴上。

标签: python pandas matplotlib plot astronomy


【解决方案1】:

我找到了一个适用于人力资源图的映射(未来参考)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
csv_file='Hertzsprung-Russell3_diagram.csv'
data=pd.read_csv(csv_file)
arr=data['bp_rp']
arr2=data['gp']
X=[]
Y=[]
for i in range(len(arr)):
    X.append(arr[i])
for i in range(len(arr2)):
    Y.append(arr2[i])
fig = plt.figure()
plt.ylim(max(Y), min(Y))
ax=fig.add_subplot(111)
plt.scatter(x=X, y=Y, c=X, cmap='RdYlBu_r')#cmap
plt.colorbar(label="Star Color", orientation="horizontal")
lhs,rhs=csv_file.split(".",1)
plt.title(lhs)
plt.show()

【讨论】:

  • 附带说明,matplotlib 不支持同一 X 和 Y 轴上的 2 个颜色条,如果要创建它,您必须制作自定义颜色条
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 2022-01-14
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
相关资源
最近更新 更多