-
Notifications
You must be signed in to change notification settings - Fork 229
Add Pythonic argument options for colorbar frame parameters #2130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
5f33ad7
02040ac
58df83a
7929982
159165c
f866e59
38907cb
4b0b88c
6969845
d141901
f87190d
2eeb95f
0f0aed4
637123a
fd1e863
33bdc8f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,7 +27,7 @@ | |
@kwargs_to_strings( | ||
R="sequence", G="sequence", I="sequence", c="sequence_comma", p="sequence" | ||
) | ||
def colorbar(self, **kwargs): | ||
def colorbar(self, frame=None, annotation=None, xlabel=None, ylabel=None, **kwargs): | ||
r""" | ||
Plot a gray or color scale-bar on maps. | ||
|
||
|
@@ -47,6 +47,12 @@ def colorbar(self, **kwargs): | |
---------- | ||
frame : str or list | ||
Set color bar boundary frame, labels, and axes attributes. | ||
annotation : int or float or str | ||
Set the interval for annotated gridlines on the colorbar. | ||
xlabel : str or int or float | ||
Set the label for the x-axis of the colorbar. | ||
ylabel : str or int or float | ||
Set the label for the y-axis of the colorbar. | ||
{cmap} | ||
position : str | ||
[**g**\|\ **j**\|\ **J**\|\ **n**\|\ **x**]\ *refpoint*\ | ||
|
@@ -105,6 +111,21 @@ def colorbar(self, **kwargs): | |
{perspective} | ||
{transparency} | ||
""" | ||
if xlabel or ylabel or annotation: | ||
if kwargs.get("B") is None: | ||
frame = [] | ||
elif isinstance(kwargs.get("B"), list): | ||
frame = kwargs.get("B") | ||
else: | ||
frame = [kwargs.get("B")] | ||
if xlabel: | ||
frame.append("x+l" + str(xlabel)) | ||
if ylabel: | ||
frame.append("y+l" + str(ylabel)) | ||
if annotation: | ||
frame.append("a" + str(annotation)) | ||
if frame: | ||
kwargs["B"] = frame | ||
Comment on lines
+111
to
+125
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is a nice backward compatible way of handling old I don't want to resurface the discussion in #1082 on dictionary/functions/classes too much, since nothing would get done if just keep talking while not doing anything. But a colleague of mine recently mentioned that using the function based approach in PyGMT (i.e. passing in parameter-arguments like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree that it would make sense to have the logic in something like decorators.py and am open to suggestions. I specifically chose to work with I don't think I understand the function based approach method you mention; it looks to me like there would still be a parameter There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Agree to keep the logic in colorbar for now. The key part is the unit tests really (which tests what the users will be doing). The implementation, be it as a decorator or some if-then check here can change afterwards.
By function-based approach, I meant exactly what you're doing here - doing frame = pygmt.param.Frame(xlabel="something")
fig.colorbar(..., frame=frame) Function-based approach would be more user friendly (allows for tab-completion). Class-based approach would be more developer friendly (less coding for us). |
||
kwargs = self._preprocess(**kwargs) # pylint: disable=protected-access | ||
with Session() as lib: | ||
lib.call_module(module="colorbar", args=build_arg_string(kwargs)) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
outs: | ||
- md5: 69740a2512fd502e3d53d16bddc0f97c | ||
size: 4878 | ||
path: test_colorbar_frame_list_parameters.png |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
outs: | ||
- md5: b7fc503b09c1c610a22081edf9cc612f | ||
size: 4840 | ||
path: test_colorbar_frame_parameters.png |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
outs: | ||
- md5: 7a8bbd25a40214160f00a5c5bf83f69d | ||
size: 3764 | ||
path: test_colorbar_frame_string_parameters.png | ||
Comment on lines
+1
to
+4
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you delete this file and see if it fixes the test failure? Maybe it's still comparing the old image? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Still no luck, tried deleting both the .dvc file and the image. |
Uh oh!
There was an error while loading. Please reload this page.